2014-02-23 22 views
0

我是新來的團結和徘徊如何移動一個角色,以便它會停止時,它撞牆。移動字符統一

目前我用這樣的代碼:

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

然而這種性格會穿牆移動。 我已將一個剛體組件添加到char。

編輯:是的,他們確實有一個盒子對撞機,並且它們實際上在碰撞時開始「反彈」,但是炭灰色穿過牆壁。

+1

牆壁上有箱子對撞機嗎?你有與角色相連的對撞機嗎?一些更多的信息將是有用的。 –

回答

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);