描述
避开障碍行为是指操控AI角色,避开路上的障碍物。当AI角色在行进路上发现障碍时,产生一个排斥力,使AI角色远离障碍。
实现过程
- 创建球体作为障碍物,球体尺寸设置为8。新建‘obstacle’的tag,将球体的tag设置为obstacle。
- 为了有更明显的效果,为球体添加颜色变化。
当AI角色可能会与球体发生碰撞时,球体变黑。
当AI角色改变线路,不再可能与球体碰撞时,球体变白。
当AI角色与球体发生碰撞时,球体变红。
当AI角色不再与球体发生碰撞时,球体变灰。
为球体添加ColliderColorChange脚本。
public class ColliderColorChange : MonoBehaviour
{
void Start () {
}
void Update () {
}
void OnTriggerEnter(Collider other)
{
print("collide0!");
if (other.gameObject.GetComponent<Vehicle>()!= null)
{
print("collide!");
this.renderer.material.color = Color.red;
}
}
void OnTriggerExit(Collider other)
{
this.renderer.material.color = Color.white;
}
}
-
为球体添加刚体,选择IS Kinematic。将球体作为预制体,搭建一个多障碍物的场景。
-
设置一个cube作为AI角色的目标,去掉collider组件。
-
AI角色添加character controller组件,添加AILocomotion脚本、SteeringForCollisionAvoidance脚本、SteeringForArrive脚本。脚本配置如图。(脚本可以在《unity3d人工智能编程精粹》代码的Chapter2中寻找)