有两种方法,一种平滑移动,一种直接修改位置(以注释)
private Vector2Int target;
private void Start()
{
target = new Vector2Int((int)transform.position.x,(int)transform.position.y);
}
//输入检测
void Update()
{
if(Input.GetKeyDown(KeyCode.W) && Input.GetKeyDown(KeyCode.A))
{
print("WA");
//transform.position += Vector2Int.up;
//transform.position += Vector2Int.left;
target = target + Vector2Int.up + Vector2Int.left ;
}
else if(Input.GetKeyDown(KeyCode.W) && Input.GetKeyDown(KeyCode.D))
{
print("WD");
//transform.position += Vector2Int.up;
//transform.position += Vector2Int.right;
target = target + Vector2Int.up + Vector2Int.right;
}
else if(Input.GetKeyDown(KeyCode.S) && Input.GetKeyDown(KeyCode.A))
{
print("SA");
//transform.position += Vector2Int.down;
//transform.position += Vector2Int.left;
target = target + Vector2Int.down + Vector2Int.left;
}
else if(Input.GetKeyDown(KeyCode.S) && Input.GetKeyDown(KeyCode.D))
{
print("SD");
//transform.position += Vector2Int.down;
//transform.position += Vector2Int.right;
target = target + Vector2Int.down + Vector2Int.right;
}
else if (Input.GetKeyDown(KeyCode.W))
{
print("W");
//transform.position += Vector2Int.up;
target = target + Vector2Int.up;
}
else if (Input.GetKeyDown(KeyCode.S))
{
print("S");
//transform.position += Vector2Int.down;
target = target + Vector2Int.down;
}
else if (Input.GetKeyDown(KeyCode.A))
{
print("A");
//transform.position += Vector2Int.left;
target = target + Vector2Int.left;
}
else if (Input.GetKeyDown(KeyCode.D))
{
print("D");
//transform.position += Vector2Int.right;
target = target + Vector2Int.right;
}
transform.position = Vector2.MoveTowards(new Vector2(transform.position.x, transform.position.y), target, 10 * Time.deltaTime);
}