我一直在努力使這項工作有一段時間,我失敗了。Unity2D - 以時間方式移動網格中的2D對象
我有一個Rigidbody2D在自上而下的2D級別,我試圖簡單地沿着座標移動它(這些級別是網格狀的),所以一步/按下按鈕等於一個正方形走過。只能沿四個方向中的一個方向行走,不管用戶什麼時候停止步行運動,它都應該在方形上結束。相當於我想達到的一個好遊戲是火焰/呼吸/任何類似的RPG系列。我試過使用協程來獲取更新函數,在每一步之後等待一秒鐘,但這似乎不起作用。我最接近的是下面的代碼。多謝你們!
public class PlayerMovement2D : MonoBehaviour
{
Rigidbody2D rbody;
Animator anim;
float speed = 1.25f;
Vector2 pos;
void Start()
{
rbody = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
pos = rbody.position;
}
void FixedUpdate()
{
Vector2 movement_vector = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
if (movement_vector.x != 0 || movement_vector.y != 0)
{
if (movement_vector.x > 0)
{
pos += Vector2.right;
pos.y = 0;
}
else if (movement_vector.x < 0)
{
pos += Vector2.left;
pos.y = 0;
}
else if (movement_vector.y > 0)
{
pos += Vector2.up;
pos.x = 0;
}
else if (movement_vector.y < 0)
{
pos += Vector2.down;
pos.x = 0;
}
anim.SetBool("IsWalking", true);
anim.SetFloat("Input_x", movement_vector.x);
anim.SetFloat("Input_y", movement_vector.y);
}
else
{
anim.SetBool("IsWalking", false);
}
rbody.position = Vector2.MoveTowards(rbody.position, pos, speed * Time.deltaTime);
//transform.position = Vector3.MoveTowards(transform.position, pos, Time.deltaTime * speed);
pos = rbody.position;
}
}
如果您嘗試了任何方法或接受解決您的問題的答案,請告訴我們。 – Maakep