Unity 3D 自动寻路(简单)

来源:互联网 发布:html与js的关系 编辑:程序博客网 时间:2024/05/22 11:38

这是一段控制僵尸向玩家移动的脚本,AI很sb但很有效。我将对Unity3d引擎和UDK引擎的AI脚本编写做一个简单的编程介绍。
}

  接着介绍Unity3d引擎下的脚本编写。需要改几个变量,首先是玩家坐标(thePlayer.Location),在Unity3D里面没有这个现成的变量,但是你也可以做一步转化获得玩家坐标thePlayer.Location=GameObject.FindWithTag("Player").transform.position
MoveTo函数的具体形式在Unity3D引擎中可以这样写
function MoveTo(position : Vector3)
 {
  var direction = position - transform.position;
  direction.y = 0;
  //(transform.rotation与Quaternion.LookRotation(direction) 之间的差值,可令游戏对象缓慢转动)
  transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation(direction),     rotationSpeed * Time.deltaTime);
  //定义物体的旋转只在Y轴 ,X与Y轴为0,不进行旋转  
  transform.eulerAngles = Vector3(0, transform.eulerAngles.y, 0);
  var forward = transform.TransformDirection(Vector3.forward);
  var speedModifier = Vector3.Dot(forward, direction.normalized);
  speedModifier = Mathf.Clamp01(speedModifier);
  direction = forward * speed * speedModifier;
  GetComponent (CharacterController).SimpleMove(direction);
 }
 如果你要跑动有声音,那么把这段插到MoveTo函数里面就可以
 if (Time.time > SoundReloadTime +lastSound)
  {
       if (Sound)
              AudioSource.PlayClipAtPoint(Sound, transform.position);
             lastSound = Time.time;
  }
 这样就有脚步声了。