C# 碰撞后立即停止刚体移动/旋转
我希望我的球体从一个位置跳到另一个位置,但不希望它随后平移。我不知道该怎么做。这是我的密码:C# 碰撞后立即停止刚体移动/旋转,c#,unity3d,C#,Unity3d,我希望我的球体从一个位置跳到另一个位置,但不希望它随后平移。我不知道该怎么做。这是我的密码: void Update() { if (!thrown && ((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended) || Input.GetMouseButtonDown(0))) { rb.isKinematic = fals
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;
}
}
有很多方法可以使对象在碰撞后立即停止。我给你两种方法: 方法1: 检测碰撞时,将
刚体的速度设置为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;
}
}
void OnCollisionEnter(碰撞)
{
if(collision.gameObject.CompareTag(“玩家”))
{
刚体rbdy=collision.gameObject.GetComponent();
//停止移动/翻译
rbdy.velocity=Vector3.0;
//停止转动
rbdy.angularVelocity=矢量3.0;
}
}
方法2:
使用物理材质控制碰撞过程中的摩擦量
转到“资源>创建>物理材质”
将弹性更改为0
将动态摩擦和静态摩擦更改为等于或大于1
然后将其连接到碰撞器上的材质
插槽
你说的“翻译”是什么意思?你有更多的代码翻译球吗?如果是这样,你应该添加它否,但AddForce正在进行翻译。如果我理解得很好,你希望球在接触地面后立即停止?是的,这正是我想要的。如果球和地面都有碰撞器
,你可以检测到两者之间的碰撞并冻结球的变换。