||
1.Seek操控行为,返回一个操控智能体到达目标位置的力。智能体穿过目标,然后传向并再次靠近。穿越的次数取决于最大速度和最大牵引力(均由用户控制)。
(当前智能体位置 - 目标位置).Normalize() *= 最大速度;
计算预期速度:这个速度是智能体在理想化情况下到达目标位置所需的速度。它是从智能体到目标的向量,大小为智能体的最大速度。
预期速度 - 智能体当前的速度(一般在初始化时随机生成) = 控制力;
2.Flee 产生一个操控智能体离开的力,与Seek相反。
和Seek的实现区别仅在于(目标位置 - 当前智能体位置)
不过可以在此基础上添加一个距离条件,让目标位置和当前智能物体的距离小于我们的条件时才有效。
3.Arrive行为是一种操控智能体慢慢减速直至停在目标位置的行为。而seek行为则不能很好的停下来。
enum Deceleration { slow = 3, normal = 2, fast =1 } ;
double speed = dist / (double) deceleration * decelerationTweaker);
书中介绍的为根据距离与一个自定义的减速枚举和DecelerationTweaker来减速,
但似乎为了简化大家都是给一个定值,省略掉enum。
3.我的测试:白色球为目标点,大鱼为Arrive控制,小鱼为Seek控制。不过从截图中表现不出什么,等学习到一个阶段完后录个video。
小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )
GMT+8, 2025-4-28 20:48 , Processed in 0.221927 second(s), 16 queries .
Powered by Discuz! X3.5 Licensed
© 2001-2025 Discuz! Team.