01/10/2018, 16:14

Thắc mắc về hệ thống vật lý trong Unity

Bạn nào làm việc vơi Unity rồi cho mình hỏi chút.
Mình đang học Unity theo hướng dẫn này: https://unity3d.com/learn/tutorials/s/roll-ball-tutorial
Game này chỉ đơn giản là lăn quả cầu và lượm cái khối màu vàng.

Mình xem đến phần này: https://unity3d.com/learn/tutorials/projects/roll-ball-tutorial/collecting-pick-objects?playlist=17141
Xử lý sự va chạm giữa Quả cầu và các khối vàng (Pick Up Object).

	void OnTriggerEnter(Collider other)
	{
		if (other.gameObject.CompareTag("Pick Up")) {
			other.gameObject.SetActive(false);
		}
	}

Script bắt sự kiện va chạm và set actice của game object Pick Up về false, làm nó biến mất.

Nhưng đoạn sau đó: https://youtu.be/XtR29MmzuT0?t=13m14s
Video có giải thích về việc Script hiện tại đã chạy được rồi nhưng chưa tối ưu. Đến đoạn này mình bắt đầu rối. Vì mới làm quen với Unity và vốn tiếng Anh không đủ để hiểu.
Mình hiểu bập bẹ thế này, nhưng có vẻ là sai:

Vấn đề này là do việc các Pick Up xoay liên tục ở hàm Update. Mà hàm này lại lặp liên tục ở mỗi frame. Mình có 12 Pick Up mỗi frame nó rotate 12 khối. Khi xử lý để làm Pick Up mất đi khi quả cầu chạm vào thì script dùng other.gameObject.SetActive(false);. Tuy nhiên sau khi làm như vậy thì Update của class Rotator vẫn tiếp tục rotato cho 12 Pick Up, trong khi đúng ra chỉ cần ratato cho cho ít hơn 12 khối.

Chỉ đoán được nội dung có vậy còn lại về phần hệ thống vật lý thì vẫn chưa hiểu gì
Vậy nên mình không hiểu vì sao lại nên add component Rigibody cho Pick Up? Và những giải thích khác về hệ thống vật lý trong Unity.
Vậy nên bạn nào làm việc với Unity và hiểu bản chất của Physics system trong Unity xin cho mình chút giải thích về vấn đề này (Unity’s Physics system). Xin cảm ơn!

Nguyễn Phạm Anh Quân viết 18:19 ngày 01/10/2018

Bài này có vẻ cơ bản, em đọc thử xem

Viblo

Cơ bản về engine vật lý trong Unity - Viblo

Technology Articles Platform from Asia, filled with latest information on Programming Languages and Frameworks. Ruby on Rails / PHP / Swift / Unity / Java /.Net

Có thêm bài này

Tuan Anh's Blog – 7 Apr 14

Bài 3: Khái niệm về Mass / Gravity trong Unity3D

Chào các bạn, hôm nay mình sẽ đi sâu hơn về một số kiến thức cơ bản trong Unity, bài của mình sẽ sử dụng một số nguồn tham khảo từ trang vietgamedev.net hy vọng sẽ giúp các bạn hiểu vấn đề. Việc đầ…

Nếu em muốn hiểu cơ bản về cơ học Newton (F = ma) thì tìm 1 cuốn vật lý đại cương mà đọc, tiếng Việt hay tiếng Anh cũng được!

Vietlubu viết 18:19 ngày 01/10/2018

Cảm ơn anh. Đúng mấy bài em đang cần. Đã thông não được phần nào

kethanbi viết 18:18 ngày 01/10/2018

cái này bạn phải kiểu cơ chế update nó như thế nào. Căn bản thì game engine nào cũng có 2 thằng update. Thằng update lớn thì 1 frame nó gọi 1 lần còn thằng update nhỏ (ở unity là fixupdate) thì nó gọi nhiều lần. Bạn để ý thằng fixupdate trong unity nó đang để default time update của nó là 0.02 đó. nó dùng thằng fix này làm physic

Bài liên quan
0