游戏AI中的集群行为(鸟)

本文介绍了在Unity中实现游戏AI集群行为的基本原理,包括分离力、队列力和聚集力,并提供了Crow游戏物体视图的概述。通过调整各力的权重和加入恒定速度、目标点力,以达到更真实的集群运动效果。
摘要由CSDN通过智能技术生成

——《unity人工智能游戏开发》的书和siki学院《Unity游戏开发人工智能编程》视频的笔记

集群行为,如果直接控制往目的前进,会统一前进,而感觉太机械化,所以要进行一定的运算,使得集群行为真实。可以看书本会比较详细,以下介绍大概原理。

集群中的力有三个,分离力,队列力,聚集力。

  • 三种力的视图

  • 分离力:在一定范围内靠太近要远离
    在这里插入图片描述
  • 队列:整个集群要大概保持同一方向
    在这里插入图片描述
  • 聚集:在一定范围内离太远要靠回来
    在这里插入图片描述

  • Crow的游戏物体视图:

    集群个体(一定要挂碰撞体,因为代码使用了Physics.OverlapSphere):
    在这里插入图片描述
  • 各种力的计算

  • 分离力:
//分离力各变量
    public Vector3 SeparationForce = Vector3.zero;//受分离力大小
    public float SeparationDistance = 3;//分离力影响范围
    public float SeparationWeight = 1;//分离力权重,可以在游戏效果微调
    public List<GameObject> SeparationNeibour=new List<GameObject>();//范围内的游戏物体
 //分离力计算
        SeparationNeibour.Clear();
        //如果想知道Physics.OverlapSphere作用可以到:
        //个人笔记:https://blog.csdn.net/weixin_43701019/article/details/96841907
        Collider[] colliders= Physics.OverlapSphere(transform.position, SeparationDistance);
        foreach(Collider collider in colliders)
        {
            if(collider.gameObject != gameObject)
            {
                SeparationNeibour.Add(collider.gameObject);
            }
        }
        
        foreach(GameObject go in SeparationNeibour)
        {
            Vector3 SepatationDir=(transform.position-go.transform.po
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值