统一移动角色

时间:2014-02-23 15:48:00

标签: c# unity3d collision-detection

我是团结的新手,并且正在徘徊如何移动一个角色,以便当它撞到一堵墙时它会停止。

目前我使用过这样的代码:

Vector3 pos = transform.position;
if(Input.GetKey("a")) pos.x -= 1;
if(Input.GetKey("d")) pos.x += 1;
transform.position = pos;

然而,这个角色将穿过墙壁。 我在char中添加了一个刚体组件。

编辑:是的,他们确实有一个盒子对撞机,当它们碰撞时,它实际上开始“弹跳”,但是这个焦点正好穿过墙壁。

1 个答案:

答案 0 :(得分:1)

你需要让物理引擎为你移动,所以不要自己设置transform.position。改为设置rigidbody.velocity

int xVelocity = 0;
if(Input.GetKey("a"))
{
    xVelocity = -1;
}
else if(Input.GetKey("d"))
{
    xVelocity = 1;
}

rigidbody.velocity = new Vector3(xVelocity, 0, 0);
相关问题