Just 4 fun!

Of course I can change the world, If you give me a source code

Post Ads (Documentation)

Author Info (Documentation)

style="display:block"
data-ad-client="ca-pub-2623284640924516"
data-ad-slot="8347113188"
data-ad-format="auto">

Friday, June 17, 2016

Lặt vặt về Sprite

          Chào các bạn, như đã nói trong các bài viết trước, trong bài này mình sẽ cung cấp cho các bạn một số vấn đề mấu chốt của SpriteRenderer. Có tham khảo trên trang Unityviet.com
1/ Lấy kích thước của spriterenderer:
Khi kéo thả một hình ảnh vào scene, trong Inspector sẽ có 2 thành phần mặc định đó là Transform và Sprite Renderer.Ở đây, để lấy được kích thước của hình chúng ta chỉ cần truy cập đến thành phần Sprite Renderer như sau:

      GetComponent<SpriteRenderer>().sprite.texture

Bằng cách này chúng ta đã tham chiếu đến mục sprite trong thành phần Sprite Renderer của đối tượng hình ảnh trong scene, và để lấy kích thước (chiều cao, chiều rộng) hình ảnh, ta chỉ cần gọi:

      GetComponent<SpriteRenderer>().sprite.texture.width

      GetComponent<SpriteRenderer>().sprite.texture.height

Ở đây, các bạn cần lưu ý là nó sẽ trả về kích thước thực của hình ảnh mà bạn đưa vào. Còn trong scene (ta gọi la không gian game) sử dụng kích thước khác. Ta có thể tham chiếu đến bằng cách gọi:

GetComponent<SpriteRenderer>().bounds

Ví dụ ở đây, mình kéo một hình ảnh vào scene, thêm script C# cho nó, sử dụng "Debug.Log(GetComponent<SpriteRenderer>().bounds); " trong hàm Update và đây là kết quả trong cửa sổ Console:


2/ Thay đổi size của sprite:
Ở đây, mình khuyên các bạn nếu muốn resize lại một hình ảnh trong scene thì nên thay đổi local scale của hình ảnh đó ở tranform như sau:
transform.localScale = new Vector3(0,0,0);
rất đơn giản đúng không?


3./Đổi Sprite:
Như ở trên, chúng ta khai báo một biến public Sprite t;
sau khi gán script vào một object, ta có thể kéo thả một sprite bất kì vào chỗ trống, sau đó nếu muốn thay đổi Sprite, ta chỉ việc gọi:
 GetComponent<SpriteRenderer>().sprite = t;

Ngoài ra, bằng việc gọi đến thành phần Sprite Renderer còn cho phép bạn thay đổi những thông số khác như:
Material (chất liệu): GetComponent<SpriteRenderer>().material
Flip (lật ảnh):
GetComponent<SpriteRenderer>().flipX = true;
GetComponent<SpriteRenderer>().flipY = true;
(việc lật ảnh trong game 2D giúp Dev không cần phải quay game object một góc 180 theo trục Y hoặc X nữa, tuy nhiên nó chỉ có từ phiên bản Unity 5.4 trở lên)
Order Layer:  GetComponent<SpriteRenderer>().sortingOrder = 1;
Như mình đã nói trong bài viết trước, việc đặt layer cho hình sẽ quyết định hình nào ở trên và hình nào ở dưới trong game khi render, rõ ràng sử dụng layer thuận tiện hơn xét vị trí theo trục Z rất nhiều, đặc biệt là trong game 2D.
 Chúc các bạn thành công!

No comments:

Post a Comment