Unity3D人工智能AI-随机徘徊

发表于2018-09-05
评论0 1.7k浏览
随机徘徊,其核心就是随机,根据算法随机行动。上一篇给大家介绍了靠近功能,这篇就来介绍下人工智能AI开发中的随机徘徊功能实现。

直接上代码:
using UnityEngine;
using System.Collections;
//pay attention that this function is quite related with frame rate
public class SteeringForWander : Steering {
    public float wanderRadius;
    public float wanderDistance;
    public float wanderJitter;
    public bool isPlanar;
    //public GameObject targetIndicator;
    private Vector3 desiredVelocity;
    private Vehicle m_vehicle;
    private float maxSpeed;
    private Vector3 circleTarget;
    private Vector3 wanderTarget;
    void Start () {
        m_vehicle = GetComponent<Vehicle>();
        maxSpeed = m_vehicle.maxSpeed;
        isPlanar = m_vehicle.isPlanar;
        circleTarget = new Vector3(wanderRadius*0.707f, 0, wanderRadius * 0.707f);
    }
    public override Vector3 Force()
    {
        Vector3 randomDisplacement = new Vector3((Random.value-0.5f)*2*wanderJitter, (Random.value-0.5f)*2*wanderJitter,(Random.value-0.5f)*2*wanderJitter);
        if (isPlanar)
            randomDisplacement.y = 0;
        circleTarget += randomDisplacement;
        circleTarget = wanderRadius * circleTarget.normalized;
        wanderTarget = m_vehicle.velocity.normalized * wanderDistance + circleTarget + transform.position;
        desiredVelocity = (wanderTarget - transform.position).normalized * maxSpeed;
        return (desiredVelocity - m_vehicle.velocity);
    }
}
来自:https://blog.csdn.net/u013108312/article/details/52892459

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引