首页 > 分享 > Unity Pet跟随AI

Unity Pet跟随AI

最新推荐文章于 2024-09-27 01:22:13 发布

ruofeng133 于 2019-08-23 20:42:29 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

思想是:宠物离的越远,速度越快,越近,速度越慢。可以做做距离插值

public float SpeedLerp = 1f; public float SpeedMin = 0.5f;// 防止距离近的时候移动过慢 // ------- void Update(){// 触发条件 mPetToPlayerDistance = Vector3.Distance( mCityPlayerCtl.Position, mModelObj.transform.position); if (mPetToPlayerDistance < mSeekDistance) { mState = CityPetState.Idle; } else { mState = CityPetState.Seek; } switch (mState) { case CityPetState.Idle: Idle(); break; case CityPetState.Seek: Seek(); break; default: break; } } void Seek() {// 计算朝向 Vector3 vector = mCityPlayerCtl.transform.position - mModelObj.transform.position; vector = Vector3.ProjectOnPlane(vector, Vector3.up); var direct = Vector3.Normalize(vector); #if UNITY_EDITOR Debug.DrawRay(mModelObj.transform.position, direct); #endif // 计算"速度" var PetPosition = mModelObj.transform.position; var mMoveDestPos = mCityPlayerCtl.Position; mMoveDestPos += new Vector3(0, 1.5f, 0); float moveDelta = Mathf.Lerp(0, mPetToPlayerDistance - mSeekDistance, SpeedLerp * CommonData.DeltaTime); float minDelta = SpeedMin * CommonData.DeltaTime; moveDelta = Mathf.Max(moveDelta, minDelta); PetPosition = Vector3.MoveTowards(PetPosition, mMoveDestPos, moveDelta); mModelObj.transform.position = PetPosition; mModelObj.transform.forward = Vector3.Slerp(mModelObj.transform.forward, direct, CommonData.DeltaTime * 5); } private void Idle() { mLogicAnimator.SetInteger("MoveStage", 0); IsMoveAction = true; }

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263

相关知识

Unity宠物跟随
unity宠物跟随移动控制
unity宠物跟随移动控制资源
Unity
AI Pet Photos
DyberPet:一个基于Unity的虚拟宠物养成游戏框架
unity 桌面宠物
Pet Portrait AI
unity之宠物跟随
基于Unity的虚拟宠物游戏设计

网址: Unity Pet跟随AI https://m.mcbbbk.com/newsview840898.html

所属分类:萌宠日常
上一篇: 离火之境新手宠物怎么选择 新手宠
下一篇: 夫妻离婚宠物该判给谁?法院发布宠