Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
[Unity2d]Vướng mắc trong code game 2d
17:15 20-07-2017
611 lượt xem
2 bình luận
20:15 20-07-2017
xin chào các bác ạ
e đang tự code 1 game dạng sokoban mà không biết code như thế nào để player di chuyển theo ô 1,tức là di chuyển theo dạng bước từng bước 1 ấy ạ,đoạn code e viết vào player di chuyển liền mạch và hay bị lệch khỏi đường đi,sau đây là code của e ạ
mong các bác giúp đỡ,e cũng đã thử google nhưng không có code về kiểu di chuyển này ạ
public class robotmoved : MonoBehaviour {
private Rigidbody2D myrobot;
void FixedUpdate()
{
if (Input.GetKey(KeyCode.UpArrow))
{
transform.position = new Vector3(transform.position.x, transform.position.y + 0.36f, transform.position.z);
transform.eulerAngles = new Vector3(0f, 0f, 0f);
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.position = new Vector3(transform.position.x, transform.position.y - 0.36f, transform.position.z);
transform.eulerAngles = new Vector3(0f, 0f, 180f);
}
if (Input.GetKey(KeyCode.RightArrow))
{
transform.position = new Vector3(transform.position.x + 0.4f, transform.position.y, transform.position.z);
transform.eulerAngles = new Vector3(0f, 0f, 270f);
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.position = new Vector3(transform.position.x - 0.4f, transform.position.y, transform.position.z);
transform.eulerAngles = new Vector3(0f, 0f, 90f);
}
}
}
bạn tắt hết mấy cái vật lý tào lao đi rồi đặt 1 cái hằng số bước đi cho nó, mỗi lần nó đi thì set lại tọa độ cho nó cứng cho nó bằng const*<số bước> là nó được thôi
Ý tưởng của mình: Nếu đã là ô thì cần một ma trận các ô. Ma trận này chính là mảng 2 chiều của các tọa độ trung tâm của các ô. Player đi chuyển vào ô chính là set lại position của player là tọa độ tương ứng.