You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
29 lines
1.0 KiB
1 month ago
|
using GAS.Runtime;
|
||
|
using Sog;
|
||
|
using UnityEngine;
|
||
|
using xFrame;
|
||
|
|
||
|
namespace CoreGame.Render
|
||
|
{
|
||
|
public static class ForceMoveSrv
|
||
|
{
|
||
|
//位移失败 或 被障碍物阻挡移动到障碍物旁边 时返回 False,没有被阻挡并位移成功返回 True
|
||
|
public static bool ForceMoveEntity(CombatEntity ent, Fixed64Vector2 offset, bool changeFaceDir)
|
||
|
{
|
||
|
if (ent.TagCountContainer.HasTag(GTagLib.State_Death)
|
||
|
|| !ent.TagCountContainer.HasTag(GTagLib.State_ForceMove)
|
||
|
|| !ent.hasNavAgentProxy)
|
||
|
return false;
|
||
|
|
||
|
var navAgentProxy = ent.navAgentProxy;
|
||
|
var res = navAgentProxy.ForceMove(offset);
|
||
|
|
||
|
var logicPos = navAgentProxy.GetLogicPos();
|
||
|
var transformProxy = ent.transformProxy;
|
||
|
if (changeFaceDir)
|
||
|
transformProxy.SetDirection((logicPos - transformProxy.position).normalized);
|
||
|
transformProxy.SetPosition(logicPos);
|
||
|
return res;
|
||
|
}
|
||
|
}
|
||
|
}
|