Sunday, April 19, 2015
Blog

by -
0 1158

[Tuyển dụng] STGAME đang cần tuyển một số vị trí sau đây, ai có người thân, bạn bè thì giới thiệu giúp mình nhé.
————————————————————————–
*** Thực Tập Viên Lập Trình game bằng Unity: (4 người)
– Tốt nghiệp các trường Đại học chuyên ngành CNTT
– Có tư duy tốt, hiểu biết về data structures và algorithm. Nắm vững lập trình hướng đối tượng OOP
– Có kinh nghiệm làm game (không nhất thiết phải biết trước Unity)
– Chủ động, có tinh thần trách nhiệm cao đối với công việc
– Thích chơi game
– Cơ hội trở thành nhân viên chính thức của STGAME sau thời gian
————————————————————————–
*** Web Designer + Developer (2 người)
– Có khả năng lập trình website trong thời gian ngắn
– Có mắt thẫm mĩ, cân chỉnh giao diện của web/game
– Chủ động, có tinh thần trách nhiệm cao đối với công việc
– Có kinh nghiệm lập trình ngôn ngữ PHP
————————————————————————–
*** Online Marketing for Mobile Game: (2 người)
– Có kinh nghiệm làm việc cho các nhà phát hành game tại Việt Nam
– Am hiểu về xu hướng thị trường,cũng như xu hướng của game di động

Ai quan tâm thì gởi hồ sơ vào email toannm@stgame.vn (A.Toàn) để liên hệ trược tiếp với mình nhé.
Hạn nạp hồ sơ: 31/12/2014, sdt: 0985404500
STGAME là một studio trẻ đang trên đà phát triển với xu thế chính là phát triển game cho thiết bị di động và đã có khá nhiều thành công, với hướng phát triển này STGAME luôn mang lại nhiệt huyết và quyền lợi cho nhân viên.Địa chỉ làm việc: 68 Trần Tấn – P. Tân Sơn Nhì – Q. Tân Phú – TP. HCMXem thêm các sản phẩm của STGAME tại http://stgame.vn

Fanpage: https://www.facebook.com/STGameVN

 

by -
0 399

Khi muốn đối tượng này có va chạm với các đối tượng khác hay bỏ qua sự va chạm giữa các đối tượng có collider thì các bạn sẽ làm thế nào?

Hôm nay mình sẽ tìm hiểu đến một cách mà làm cho Game Objects va chạm với các đối tượng Game Objects khác được gắn với một layer xác định.

LayerBasedCollision

Trong hình trên có 6 GameObjects, (3 planes, 3 cubes) và một ma trận va chạm “Collision Matrix” ở bên phải và những trạng thái mà Objects có thể va chạm với layer nào đó. Trong ví dụ này, chúng ta có một tập Collision Matrx trong một cách mà chỉ các GameObjects mà thuộc về cùng layer có thể va chạm.

Cách thiết lập các GameObjects để có thể dò tìm sự và chạm dựa trên các layer.

Chọn một layer mà Game Objects sẽ phụ thuộc vào.

LayerBasedCollisionLayer

Lặp lại tương tự với mỗi Game Object cho đến khi bạn hoàn tất việc gắn đối tượng vào một lớp layer xác định.

Chọp Physics Preference Panel bằng cách clicking trên Edit -> Project Settigs -> Physics.

Chọn các layers trên Collision Matrix mà sẽ tương tác với các layers khác bằng cách tick vào checkbox liên kết chúng.

LayerCollisionMatrix

 

by -
0 718

Việc phải di chuyển đối tượng trong game khá phổ biến nên mình xin giới thiệu một số cách nhanh chóng đơn giản cho các bạn tham khảo:

– Sử dụng Itween: Cách đơn giản nhất là sử dụng Itween bạn chỉ cần gọi hàm

– Sử dụng Itween: Cách thứ 2 khi sử dụng Itween cũng rất dễ sử dụng nhưng cách này cho phép bạn tùy chỉnh thêm các xử lý khác trong khi di chuyển:

– Sự dụng Hàm Vector3.Lerp: cách này xử dụng khi bạn muốn sử di chuyển object trong hàm Update

Chúc các bạn thành công!

Ở phần này, mình sẽ hướng dẫn các bạn về bóng (shadow) cho vật thể trong game 3D.

Đầu tiên, màn hình chính của chúng ta sẽ tạo những đối tượng sau: Plane, Cube, và một Directional Light như hình.

Screen Shot 2014-11-19 at 21.08.23

Chắn chắn rằng vật thể của bạn (Plane và Cube) phải bật cả 2 chế độ là Cast Shadows và Receive Shadows.

Screen Shot 2014-11-19 at 21.09.33

Tiếp theo để bật shadow cho bóng đèn, tao chọn vào light, bật chế độ bóng lên. Có 2 kiểu shadow đó là Hard và Soft. Bóng mềm hoặc cứng là tuỳ ý của bạn.

Bóng mềm chi phí về đồ hoạ sẽ cao hơn. Nên mặc định project của bạn chỉ nhận bóng cứng. Để bật lên, bạn vào Edit -> Project Settings -> Quality, bạn chọn tất cả lên cấu hình Good. Và đây cũng là nơi cấu hình đồ hoạ cho project của bạn. Tuỳ cấu hình và đối tượng, bạn phải chọn sao cho phù hợp để tối ưu nhất.

Screen Shot 2014-11-19 at 21.12.51

Và đây là kết quả:

Screen Shot 2014-11-19 at 21.14.28

Để hình ảnh và bóng được đẹp và bắt mắt hơn, chúng ta có thể dùng một số hiện ứng của Image Effects

Screen Shot 2014-11-19 at 21.21.54

Khi import xong, bạn vào camera để thêm hiện ứng cho camera. Ở đây mình sẽ dùng thêm hiện ứng Ambient Abscurance và Bloom trong mục Component -> Image Effects.

Screen Shot 2014-11-19 at 21.25.55

Và đây là kết quả sau khi dùng hiệu ứng. Tới đây là kết thúc phần 2. Phần tiếp theo, mình sẽ nói về Light Mapping trong Unity3D để tối ưu hiệu suất một cách tối đa. Chúc các bạn thành công

by -
0 228

Khi tính toán chuyển động với các Vector3 khi code, có thể bạn sẽ cần một số mẹo để tính toán nhanh hơn, vector pháp tuyến cũng là một phạm trù khá quen thuộc, hôm nay chúng ta sẽ tìm hiểu.

Một vector pháp tuyến (nghĩa là một vector vuông góc với một mặt phẳng) là cần thiết thường được dùng khi sử dụng lưới mesh và cũng có thể hữu ích khi tính toán di chuyển vị trí object trên đường vòng hay trong các tình huống khác.

Với ba điểm trên mặt phẳng, nối chúng lại với nhau ta được 3 góc của một tam giác, điều này là bình thường. Chọn bất kỳ một điểm và từ nó vẽ tới 2 điểm còn lại ta được 2 vector hướng Side 1 và Side 2.

CalculateNormal

Ta định nghĩa 3 vector ở trên:

Hàm cross của Vector3 với đầu vào là hai vectơ này sẽ cung cấp cho một vector thứ ba, đó là vector vuông góc với bề mặt (bề mặt được tạo từ 2 vector là side1 và side2).

“Quy tắc bàn tay trái” có thể được sử dụng để quyết định thứ tự tham số chuyền vào, vector nào trước vector nào sau. Khi bạn từ phía trên nhìn xuống bề mặt, nếu thứ tự vector chuyền vào được quét theo chiều kim đồng hồ thì vector pháp tuyến sẽ hướng ra, nếu ngược lại thì vector pháp tuyến sẽ hướng vào trong.

Như ở đây ta sẽ có vector perp:

Vector perp sẽ hướng ra ngoài, vì thứ tự tham số là vector side1 và vector side2, quét theo chiều kim đồng hồ. Kết quả perp chỉ theo hướng ngược lại nếu thứ tự của các vectơ đầu vào được đảo ngược.

Đối với mesh, vector pháp tuyến cũng phải được tiêu chuẩn hóa hóa. Điều này có thể được truy cập bởi thuộc tính normalized của một Vector3, nhưng có một mẹo mà là đôi khi hữu ích, bạn cũng có thể tiêu chuẩn hóa hóa các vector vuông góc bằng cách chia nó bởi độ lớn của nó:

Nó  chỉ ra rằng diện tích tam giác bằng perpLength / 2. Điều này rất hữu ích nếu bạn cần phải tìm diện tích bề mặt của toàn bộ lưới hoặc muốn chọn hình tam giác ngẫu nhiên với xác suất dựa trên khu vực tương đối của chúng.

by -
0 110

Hôm nay mình sẽ hướng dẫn cho các bạn 1 mẹo đơn giản để có thể thay đổi màu của 1 đối tượng.  Việc này cần khi bạn cần thay đổi sắc thái của nhân vật, ở đây mình muốn nói đến nhân vật được tạo thành từ nhiều SpriteRenderer khác nhau.

Cách 1: Thay đổi màu của tất cả SpriteRenderer con

Cách 2: Dùng Material ( nhanh hơn)

 

 

 

by -
0 346

Trong bài viết này, tôi sẽ hướng dẫn các bạn cách tạo 1 đường đạn bắn hình tròn với độ cao tối đa cho trước.

Để mô tả để hiểu, ví dụ như bạn có 1 cái súng cối, và bắn đạn sao cho nó bay câu lên để vượt tường và rơi xuống trúng mục tiêu.

Nếu làm chuyển động parapol thì hơi phức tạp, bạn có thể chuyển sang làm chuyển động hình tròn để đơn giản hơn, tuy nhiên hiệu ứng vẫn rất thật, và theo đó, bạn có thể cải tạo code cho chuyển động thật hơn như có thêm gia tốc góc, parabol, …

Để minh họa cho chuyển động, bạn xem hình dưới đây:

0

Vật thể chuyển động từ vị trí ban đầu A sang mục tiêu B, theo quỹ đạo hình tròn tâm C, bán kính R, vector pháp tuyến của mặt phẳng quỹ đạo là P, chiều cao tối đa cho viên đạn bay lên là H, vận tốc góc ứng với góc delta là a (mỗi frame, viên đạn dịch chuyển 1 góc a)

Tất nhiên là sẽ có nhiều công thức tính toán trong trường hợp này, tuy nhiên bạn vui lòng tự tìm hiểu bằng kiến thức hình học không gian, tôi chỉ đưa ra code cho các bạn chạy thôi nhé!

Để demo, bạn tạo 1 scene với 1 bề mặt sàn Floor (z=0) và 1 hình cầu ở giữa tượng trưng cho súng cối (z=1), bạn tạo 1 prefab hình cầu là Bullet tượng trưng cho viên đạn sẽ bắn ra:

1

Tiếp đó bạn tạo 2 Script sau:

script dành cho prefab viên đạn:

 

Script dành cho súng cối (nhớ kéo prefab viên đạn vào):

 

Xong rồi đấy, bạn test thử nhé!

Chúc thành công và hẹn gặp lại

by -
0 280

Các bạn đã biết đến cách lưu thông tin game qua loạt bài hướng dẫn sử dụng JSON để lưu trữ thông tin.

Hôm nay mình sẽ giới thiệu một cách khác có thể là một cách thay thế hữu hiệu nếu bạn muốn lưu thông tin game đó là sử dụng chức năng Serializable.

Serializable cho phép bạn lưu thông tin của cả “Class” mà bạn có thể “Load” lên lại và sử dụng một cách bình thường. Nghe rất đơn giản và dễ sử dụng phải không? Ví dụ bạn có một Class Character cần lưu lại trong game như sau:

Và đây sẽ là những việc bạn cần làm để lưu và load lại thông tin về một danh sách Character như thế:

Tương tự bạn có thể lưu thông tin của nhiều class hay bất kì thông tin nào bạn muốn( có thể sử dụng một Class cha chứa nhiều các Class con để lưu lại thành 1 file duy nhất hoặc lưu thành nhiều file khác nhau).

Chúc các bạn thành công!

by -
0 312

Các bạn tham khảo phần 1 ở đây nhé http://unityviet.com/su-dung-itween-tao-ao-giac-nen-dong-vo-han/

2014_11_12_03

Mình sẽ giải thích đoạn code iTw een ở bài trước:

Định nghĩ hàm iTween.MoveAdd: Di chuyển vị trí của một game object theo thời gian.

Di chuyển game object tới một điểm amount cho trước trong thời giam time giây.

Hashtable là một kiểu từ điển ( kiểu tập hợp trong đó có 2 thành phần chính liên hệ với nhau là khóa và giá trị) được tối ưu cho việc truy cập nhanh. Khi chúng ta truy cập một giá trị trong hashtable thì phải cấp một khóa. Khóa trong hashtable có thể là kiểu dữ liệu được xây dựng sẵn hay cũng có thể là thể hiện của kiểu dữ liệu do người dùng tạo ra.

Ta có một số thuộc tính khóa thường dùng như:

- amount:  di chuyển game object tới một điểm amount cho trước trong thời giam time giây.

- x: di chuyển riêng game object theo trục x với giá trị đầu vào

- y: di chuyển riêng game object theo trục y với giá trị đầu vào

- z: di chuyển riêng game object theo trục z với giá trịd đầu vào

- time: thời gian di chuyển trong bao lâu, tính là giây

- speed: tốc độ di chuyển, thuôc tính này có mối quan hệ tới thuộc tính time.

- easetype: kiểu di chuyển của game object, tuyến tính, tăng dần, giảm dần, có gia tốc hay không, v…

- looptype: có 3 kiểu là không lặp, lặp thông thường và lặp pingpong (tức là dọi ngược lại).

- delay: thời gian trễ trước khi bắt đầu move..

Giờ mình sẽ thêm một game object character vào, đó là một khối hình cầu sphere, gồm các thông tin như sau:

2014_11_12_02

Gắn với một script để bắt sự kiện di chuyển sang trái, sang phải bằng phím mũi tên và nhảy lên  bằng phím space

2014_11_12_01

Sự lý khi va chạm với các Ground, là nền mà mình tạo ở bài trước

Chúc các bạn thành công.

 

 

by -
0 239

Chào các bạn, hôm nay mình sẽ bắt đầu một loạt bài viết hướng đã các bạn hiểu rõ hơn về ánh sáng trong Unity, từ đó game 3D của các bạn sẽ trở nên cool hơn.

Ở phần này, mình sẽ nói về loại đèn, cấu hình cơ bản trong Unity3D. Hiện trong Unity3D có tất cả 4 loại đèn:

  1. Directional: Đèn chiếu theo hướng, và ảnh hưởng đến toàn bộ vật thể trong scene
  2. Point: Đèn chiếu sáng ảnh hưởng trong phạm vi bán kính của nó được cấu hình
  3. Spot: Đèn kiểu hình chóp, chiếu từ đỉnh và rộng ra phía đuôi
  4. Area: Kiểu đèn để làm sáng một bên của vật thể. Loại đèn này chỉ dùng chi lightmapping (mình sẽ nói ở phần sau)

Screen Shot 2014-11-11 at 22.48.17

Đầu tiên, mình sẽ tạo các vật thể 3D trên màn hình để thử nghiệm lighting trong Unity3D.

Screen Shot 2014-11-11 at 22.54.06

 

Sau đó, mình sẽ tạo 1 Directional Light, và xoay hướng cho đèn theo ý của mình. Với đèn này, bạn có các thuộc tính như Intensity là độ sáng, Color là màu của ánh sáng ….

Screen Shot 2014-11-11 at 22.55.03

 

Screen Shot 2014-11-11 at 23.05.47

Tiếp theo mình sẽ thử nghiệm với Point Light:

Screen Shot 2014-11-11 at 23.05.35

Screen Shot 2014-11-11 at 23.05.39

Và cuối cùng là SpotLight

Screen Shot 2014-11-11 at 23.06.25

Screen Shot 2014-11-11 at 23.06.28

Bài viết tiếp theo, mình sẽ hướng dẫn các bạn cách đổ bóng, và cấu hình shadow trong Unity3D. Hẹn gặp lại.

 

SOCIAL

4,810FansLike
4FollowersFollow
17SubscribersSubscribe