• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

游戏开发

Unity3D人工智能AI-随机徘徊

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/youxikaifa/2018/1120/200.html

Unity3D人工智能AI-随机徘徊

 

随机徘徊,其核心就是随机,根据算法随机行动。上一篇给大家介绍了靠近功能,这篇我们常州微信公众平台开发-幻天网络就来介绍下人工智能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);

   



上篇:上一篇:Unity3D人工智能AI-靠近
下篇:下一篇:Unity游戏的GC(garbagecollection)优化