我希望我的球体从一个位置跳到另一个位置但不希望它随后翻译。我无法弄清楚如何做到这一点。这是我的代码:
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 :(得分:2)
有很多方法可以让对象在碰撞后立即停止。我会给你两种方式:
方法1 :
当您检测到碰撞时,将Rigidbody
的速度设置为0
。
如果对象也在旋转,请将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 :
使用 Physic Material 来控制碰撞过程中的摩擦力。
转到资产&gt; 创建&gt; 物理材料
将 Bounciness 更改为0
。
将动态和静态摩擦更改为等于或大于1
的值。
然后将其附加到Material
上的Collider
广告位。