我有几个动画车对象,它们有自己的动画和动画控制脚本。汽车对象在道路上运行,我想管理 所有汽车动画,即
我尝试使用这种技术的光线投影,然后我在每辆车上添加了对撞机,然后我从每辆车上进行了光线投射。 它部分工作,有时候没有检测到前方对象的相关性,因为我的代码其他声明看起来并不正确。
I think that it is not the right way to do this job. what is the correct way to do as Raycast is also expensive
if (Physics.Raycast(transform.position, transformForwad, out rayHit, 10f))
{
if (rayHit.transform.tag == "Car")
{
Debug.Log("car collide, current object: "+ transform.name +" : hitted "+ rayHit.transform.name);
isCarNearToAnotherCar = true;
ANIMATION_OBJECT.GetComponent<Animation>()[ClipName].speed = rayHit.transform.GetComponent<AnimationControlSpeed>().Speed/2;
}
else {
Debug.Log("car collide end, current object: " + transform.name + " : hitted " + rayHit.transform.name);
isCarNearToAnotherCar = false;
}
}
//Update speed only when isCarNearToAnotherCaris false.
if (!isCarNearToAnotherCar)
{//normal the speed, when there is no car ahead
ANIMATION_OBJECT.GetComponent<Animation>()[ClipName].speed = Speed;
}
答案 0 :(得分:1)
我看到两个选项:
1)当您控制所有车辆并且您知道他们的订单时(正如您所说,永远不会改变),为什么不根据车辆进行数学计算?&#39;位置和尺寸,而不是光线投射?比较铅笔的尺寸和尺寸。位置到第二辆车并采取相应的行动,然后是第二辆,然后是第三辆,依此类推.-或者,恕我直言,甚至更好
2)为什么不使用对撞机?您可以在汽车的前保险杠上添加扳机碰撞器,并在碰到前车的刚体时触发事件。您可以根据需要放置对撞机,以设置反应范围&#39;你喜欢什么。
你甚至可以设置不同的防撞箱#34;不同车型的尺寸,基于&#34;勇敢&#34;司机是 - 因为距离前方太近了。