我是团结的新手,并且正在徘徊如何移动一个角色,以便当它撞到一堵墙时它会停止。
目前我使用过这样的代码:
Vector3 pos = transform.position;
if(Input.GetKey("a")) pos.x -= 1;
if(Input.GetKey("d")) pos.x += 1;
transform.position = pos;
然而,这个角色将穿过墙壁。 我在char中添加了一个刚体组件。
编辑:是的,他们确实有一个盒子对撞机,当它们碰撞时,它实际上开始“弹跳”,但是这个焦点正好穿过墙壁。
答案 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);