public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { if (curSectionTime < m_StartTime) { return(true); } GameObject obj = sender as GameObject; if (obj == null) { return(false); } switch (m_RelativeType) { case "RelativeOwner": SetTransformRelativeOwner(obj); break; case "RelativeSelf": SetTransformRelativeSelf(obj); break; case "RelativeTarget": SetTransformRelativeTarget(obj, instance.CustomDatas.GetData <MoveTargetInfo>()); break; case "RelativeWorld": obj.transform.position = m_Postion; obj.transform.rotation = UnityEngine.Quaternion.Euler(m_Rotate); break; } if (m_IsUseTerrainHeight) { UnityEngine.Vector3 terrain_pos = TriggerUtil.GetGroundPos(obj.transform.position); obj.transform.position = terrain_pos; } TriggerUtil.UpdateObjWantDir(obj); TriggerUtil.UpdateObjTransform(obj); return(false); }