Unity Changing Another Class 碰撞
Unity Changing Another Class With Collision
假设我在与触发器发生碰撞时试图改变力。当我添加新力时,我还需要在固定更新 class 中取消之前的力。我如何在碰撞 class 中暂时禁用固定更新 class 中的力?我尝试将 rb.Sleep() 添加到碰撞 class 中,但这只会冻结播放器。有任何想法吗?谢谢
void FixedUpdate()
{
rb.AddForce(Vector3.down * gravity);
private void OnTriggerStay(UnityEngine.Collider collision)
{
if (collision.gameObject.name == "Trigger")
{
rb.AddForce(Vector3.forward * gravity)
}
}
真的无法得到你想要说的内容但是,我得到的是减去在现在要添加的当前 Yforce 之前添加的 Xforce。如果是这样,您可以使用变量来保存(以前是负数)Xforce 值并在添加 Yforce 时先减去它。
Xforce = Your_Force_to_be_added;
if (condition)
{
minus Xforce first
add Yforce here
}
不太清楚,可能有两种情况。你在 FixedUpdate 中有一个力,然后在碰撞时你想提供一个新的力并停止 "constant" 一个。
void FixedUpdate(){
if(condition==false){return;}
rb.AddForce(gravity);
}
然后在碰撞中切换该条件。
但是您在更新中施加的力只是重力。
所以你可以使用rb.useGravity并设置它on/off。
假设我在与触发器发生碰撞时试图改变力。当我添加新力时,我还需要在固定更新 class 中取消之前的力。我如何在碰撞 class 中暂时禁用固定更新 class 中的力?我尝试将 rb.Sleep() 添加到碰撞 class 中,但这只会冻结播放器。有任何想法吗?谢谢
void FixedUpdate()
{
rb.AddForce(Vector3.down * gravity);
private void OnTriggerStay(UnityEngine.Collider collision)
{
if (collision.gameObject.name == "Trigger")
{
rb.AddForce(Vector3.forward * gravity)
}
}
真的无法得到你想要说的内容但是,我得到的是减去在现在要添加的当前 Yforce 之前添加的 Xforce。如果是这样,您可以使用变量来保存(以前是负数)Xforce 值并在添加 Yforce 时先减去它。
Xforce = Your_Force_to_be_added;
if (condition)
{
minus Xforce first
add Yforce here
}
不太清楚,可能有两种情况。你在 FixedUpdate 中有一个力,然后在碰撞时你想提供一个新的力并停止 "constant" 一个。
void FixedUpdate(){
if(condition==false){return;}
rb.AddForce(gravity);
}
然后在碰撞中切换该条件。
但是您在更新中施加的力只是重力。
所以你可以使用rb.useGravity并设置它on/off。