【发布时间】:2016-07-28 22:40:21
【问题描述】:
我有不同的汽车动画在马路上行驶,它们是从 max 导入的。我想制作这样一个智能系统,如果一辆车开始从另一辆车触发,它就会停止。到目前为止,我已经尝试过了。
-
汽车左/右包含此代码。将此脚本添加到汽车左、右对撞机,如果此对撞机与汽车对象相撞,则汽车停止。(并在触发器退出时恢复)
void OnTriggerEnter(Collider c) { if (c.tag == "Car") { Debug.Log("collided with : carsideTriggerScript :" + c.transform + " - object Name to stop : " + gameObject.name); c.transform.gameObject.GetComponent<AnimationControlSpeed>().Speed = 0; //StartCoroutine(DecreaseSpeedGradually(transform.gameObject.GetComponent<AnimationControlSpeed>())); } } void OnTriggerExit(Collider c) { if (c.tag == "Car") { Debug.Log("Exi collided with : carsideTriggerScript:" + c.transform + " - object Name to resume : " + gameObject.name); c.transform.gameObject.GetComponent<AnimationControlSpeed>().Speed = 1; } } -
添加了检查汽车是否开始与 carBack 碰撞器碰撞然后停止的脚本(并在触发器退出时恢复。与上面的脚本相同)。
但是正在创建一个场景,您可以在图 2 中看到。
我可以处理它。似乎一辆汽车对撞机撞到了 carRightCollider 并且另一辆汽车发生了同样的事情,因此两辆汽车都停止了并且无法再次移动。 我该如何控制它?因为相同的脚本使用相同的 OntriggerEnter 和逻辑附加到每个游戏对象。
【问题讨论】:
-
看起来你需要一个球体或胶囊对撞机
-
为什么?是什么原因
-
你的碰撞器之间有间隙,要么创建一个大碰撞器,要么确保现有碰撞器重叠