2017-04-02 267 views
0

我希望我的球体从一个位置跳到另一个位置,但不希望它在之后翻译。我无法弄清楚如何做到这一点。这里是我的代码:在碰撞后立即停止刚体运动/旋转

void Update() 
{ 
    if (!thrown && ((Input.touchCount > 0 
    && Input.GetTouch(0).phase == TouchPhase.Ended) 
    || Input.GetMouseButtonDown(0))) 
    { 
     rb.isKinematic = false; 
     rb.AddForce(new Vector3(0.0f, 15.0f, 5.0f)); 
     thrown = true; 
    } 
} 
+0

你是什么意思“翻译”?在翻译球的地方你有更多的代码吗?如果是这样,您应该添加它 – dogiordano

+0

否,但AddForce正在进行翻译。 – solo365

+0

如果我理解得很好,你想让球在接地后停下来吗? – Andromelus

回答

2

有很多方法可以使对象在collison后立即停止。我给你两条路:

方法1

当你检测科里森将Rigidbody0速度

如果对象也在旋转,请将angularVelocity设置为0

void OnCollisionEnter(Collision collision) 
{ 
    if (collision.gameObject.CompareTag("Player")) 
    { 
     Rigidbody rbdy = collision.gameObject.GetComponent<Rigidbody>(); 

     //Stop Moving/Translating 
     rbdy.velocity = Vector3.zero; 

     //Stop rotating 
     rbdy.angularVelocity = Vector3.zero; 
    } 
} 

方法2

使用物理学材料到科里森期间控制摩擦的量。

转到资产>创建>物理学材料

更改反弹力0

更改动态静态摩擦到值等于或超过1

enter image description here

然后将其连接到Material插槽您Collider

enter image description here