【问题标题】:Unity Changing Another Class With CollisionUnity 用碰撞改变另一个类
【发布时间】:2017-11-05 04:24:05
【问题描述】:
假设我在与触发器发生碰撞时尝试改变力。当我添加新的力量时,我还需要取消固定更新类中的先前力量。在碰撞类中如何临时禁用固定更新类中的力?我尝试将 rb.Sleep() 添加到碰撞类中,但这只会冻结玩家。有任何想法吗?谢谢。
void FixedUpdate()
{
rb.AddForce(Vector3.down * gravity);
private void OnTriggerStay(UnityEngine.Collider collision)
{
if (collision.gameObject.name == "Trigger")
{
rb.AddForce(Vector3.forward * gravity)
}
}
【问题讨论】:
标签:
c#
unity3d
collision
rigid-bodies
【解决方案1】:
不太清楚,可能有两种情况。您在 FixedUpdate 中给出了一个力,然后在发生碰撞时您想提供一个新力并停止“恒定”力。
void FixedUpdate(){
if(condition==false){return;}
rb.AddForce(gravity);
}
然后在碰撞中切换该条件。
但你在更新中应用的力量只是重力。
因此您可以使用 rb.useGravity 并将其设置为开/关。
【解决方案2】:
真的无法得到你想说的但是,我得到的是减去现在要添加的当前 Yforce 之前添加的 Xforce。如果是这样,您可以使用变量来保存(以前是减号)Xforce 值并在添加 Yforce 时首先减掉它。
Xforce = Your_Force_to_be_added;
if (condition)
{
minus Xforce first
add Yforce here
}