using UnityEngine;
using System.Collections;
using Pathfinding.RVO;
public class SimpleRVOAI : MonoBehaviour {
RVOController controller;
void Awake () {
controller = GetComponent<RVOController>();
}
public void Update () {
var targetPoint = transform.position + transform.forward * 100;
controller.SetTarget(targetPoint, 10, 12);
var delta = controller.CalculateMovementDelta(transform.position, Time.deltaTime);
transform.position = transform.position + delta;
}
}
代码做的事情就是,获取RVOController组件,并且每帧设置一个前方很远的点,它告诉局部回避系统,它想以一个10每秒的速度移动,但是如果条件允许,它可以以12每秒的速度移动。如果你都添加好了,那么点击PLAY按钮,它会以一个稳定的速度前行。
需要注意的是,RVOController本身并不处理移动,一些游戏如果想使用transform.translate的话,也可以加一个CharacterController,甚至一些人可能想使用rigidbody也是没有问题的。但是要知道,它的移动速度是取决于RVOController的velocity计算的。
|