2015-12-07 105 views
-1

我有,接收其各自的輸入之後,其移動這樣一個對象:團結2D反彈與其他物體發生碰撞時,移動物體

mov = new Vector3((Input.GetAxis("Horizontal") * vel), 0, 0); 
transform.position += mov; 

不過,我希望它反彈的時候,一旦發生碰撞與一個對象。

從來就做出的程序已經(OnCollisionEnter2D(Collsion2D col){bla bla...}),但我需要在碰撞(反彈的對象)會發生什麼幫助....

從來就試着給相撞對象彈跳材料,但它只是減慢了一點,我的猜測是由於恆定的加速度給予力量。

問候。

回答

0

您在當前時間傳送目標。相反,您應該使用Rigidbody.addForce,這將在指定的方向上添加一個力,因此如果您執行相反的操作,則會「反彈」該對象。另一個選擇是創建一個物理材料,然後不打擾代碼。

+0

嗯,我沒有addForce(雖然我嘗試過),因爲我已經在使用翻譯,並且我剛剛瞭解到在相同的上下文中合併這兩種語言並不好用碰撞物給碰撞物體一個共享材料,並按照我想要的方式工作。 – LinkWindcrafter

1

如果你用transform.position移動物體,你所做的基本上是一個「傳送」,所以它會忽略彈跳材質。如果你想讓它反彈,你必須編寫物理代碼來檢測碰撞並改變運動,或者你可以做附加力來移動物體,它會檢測碰撞並自動作出反應。

+0

是啊,其實我剛剛得知,這不是好主意在兩個對象之間合併翻譯和物理。 – LinkWindcrafter

+0

考慮同時使用addforce和衝動來模擬在碰撞時彈跳的樂趣 –

0

您沒有使用材料,對嗎?

看看這篇文章的內容可以幫助你時,OP是使用使用光線投射的公式和答案指導他使用光線投射與Layers Maks

2D bouncing formula doesn't work properly

有這其中也有固定角度(如),但它使用的材料(具有值:摩擦:0,反彈力:1): https://gamedev.stackexchange.com/questions/70294/get-gameobject-to-bounce-of-colliders

但是,如果沒有什麼有意義,你要瘋了,可能要從零開始,對彈跳和2D滑動這個官方視頻教程: https://unity3d.com/learn/tutorials/modules/beginner/2d/sliding-bouncing-2d

+0

謝謝,我試過給對象的boxCollider2d一個sharedMaterial與bounciness和它的工作! – LinkWindcrafter