Unity Movement AI (一)

本文介绍了Unity中的基本运动AI行为,包括Arrive(直达目的地)、Wander(漫步)和Seek(寻求)。这些行为适用于带有Rigidbody组件的游戏对象,通过避免碰撞并根据目标位置进行决策。此外,还提到了Flee(逃跑)和其他运动AI模式,如FollowPath。文章提供了代码库链接供读者下载和研究。
摘要由CSDN通过智能技术生成


注: 这种使用Rigidbody组件的 方式 ,不适合MMO服务器控制逻辑了, 服务器又没有Rigidbody组件的概念。 

         感兴趣的可以下载下来  跑一下(是下载源代码,不是release )

地址:  https://github.com/SunGuangdong/unity-movement-ai


        这个库有以下Movement AI  : Arrive 抵达,   Cohesion 凝聚,   Collision Avoidance 碰撞避免,   Evade 逃避,   Flee 逃离,   Follow Path 跟踪路径,    Hide 隐藏,  Interpose 插入(干预,管闲事),   Offset Pursuit 偏移追求,   Pursue 追求,   Seek 寻求,   Separation 分离,   Velocity Match 速度匹配,    Wall Avoidance 墙壁避免,  andWander 漫游.  

            有的意思都是一样的, 区别是 是否与预测目标的接下来一段时间的位置然后做出正确的决定。

   


1 Arrive 直达目的地


       这是一个公共运动AI脚本库,被称为指导行为Steering Behaviors。你可以使用这些脚本帮助npc在你的游戏中移动。
目前,库只在x/y方向上移动游戏对象。

就是从当前位置移动到目标位置:
Cube对象命名: ArriveUnit2
添加 Rigidbody 组件  。
子对象 Cube 用于表示方向
public class ArriveUnit2: MonoBehaviour
{
    public Vector3 targetPosition;

    private SteeringBasics2 steeringBasics;



    private void Start()
    {
        steeringBasics = GetComponent<SteeringBasics2>();
    }

    private void Update()
    {
//   计算线性加速度
        Vector3 accel = steeringBasics.Arrive(targetPosition);

//  得到速度
        steeringBasics.Steer(accel);
// 使当前的游戏对象的朝向   ,他要去的地方
        steeringBasics.LookWhereYoureGoing();
    }
}

另一个主要的脚本:
[RequireComponent (typeof (Rigidbody))]
public class SteeringBasics2 : MonoBehaviour {
		public float maxVelocity = 3.5f;

	/* 最大加速度 */
	public float maxAcceleration = 10f;
    /* 目标的半径, 意味着我们已经到达了 */
    public float targetRadius = 0.005f;

	/* 到这个距离时,开始减速  */
	public float slowRadius = 1f;

	/* 我们想要达到目标速度 所需时间 */
	public float timeToTarget = 0.1f;

	public float turnSpeed = 20f;

	private Rigidbody rb;

	public bool smoothing = true;
	public int numSamplesForSmoothing = 5;
	private Queue<Vector2> velocitySamples = new Queue<Vector2>();

	void Start () {
		rb = GetComponent<Rigidbody> ();
	}

    internal Vector3 Arrive(Vector3 targetPosition)
    {
        /* 得到 正确方向*/
        Vecto
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值