68 lines
2.9 KiB
C#
68 lines
2.9 KiB
C#
|
//This code create by CodeEngine
|
|||
|
|
|||
|
using Games.LogicObj;
|
|||
|
using Games.Scene;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace SPacket.SocketInstance
|
|||
|
{
|
|||
|
public class GC_TELEMOVEHandler : Ipacket
|
|||
|
{
|
|||
|
public uint Execute(PacketDistributed ipacket)
|
|||
|
{
|
|||
|
var packet = (GC_TELEMOVE) ipacket;
|
|||
|
if (null == packet)
|
|||
|
return (uint) PACKET_EXE.PACKET_EXE_ERROR;
|
|||
|
//enter your logic
|
|||
|
var character = Singleton<ObjManager>.GetInstance().FindObjCharacterInScene(packet.ObjId);
|
|||
|
var targetPos = new Vector2(packet.TargetPosX, packet.TargetPosZ).ToClientPos();
|
|||
|
if (character == null)
|
|||
|
{
|
|||
|
//ObjManager.Instance.MoveHidePlayer(packet.ObjId, targetPos.x, targetPos.y);
|
|||
|
return (uint) PACKET_EXE.PACKET_EXE_CONTINUE;
|
|||
|
}
|
|||
|
else if (character.IsDie())
|
|||
|
return (uint) PACKET_EXE.PACKET_EXE_CONTINUE;
|
|||
|
//如果_objChar为轻功状态,则打断轻功
|
|||
|
//if (character.MovementState == MoveState.JumpDelay)
|
|||
|
// character.EndLightSkillMove();
|
|||
|
//var autoMove = character.GetComponent<AutoMove>();
|
|||
|
//if (autoMove != null)
|
|||
|
// autoMove.ResetAutoMove();
|
|||
|
//向目标点移动
|
|||
|
float speed = packet.Speed;
|
|||
|
if (speed <= 0)
|
|||
|
speed = character.BaseAttr.MoveSpeed;
|
|||
|
Obj_Character.TeleMoveExtraAction teleMoveExtraAction = null;
|
|||
|
if (packet.HasExtparamtype)
|
|||
|
{
|
|||
|
switch (packet.Extparamtype)
|
|||
|
{
|
|||
|
case 0:
|
|||
|
teleMoveExtraAction = new Obj_Character.TeleMoveInvisible(character, packet.Extparam1.ToClientTime(), packet.Extparam2.ToClientTime());
|
|||
|
break;
|
|||
|
case 1:
|
|||
|
teleMoveExtraAction = new Obj_Character.TeleMoveAnim(character, packet.Extparam1, packet.Extparam2);
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
Quaternion? faceDir;
|
|||
|
if (packet.HasFinishfacedir)
|
|||
|
faceDir = CommonUtility.ServerRadianToQuaternion(packet.Finishfacedir);
|
|||
|
else if (packet.HasNeedChangeFaceto && packet.NeedChangeFaceto > 0)
|
|||
|
faceDir = Quaternion.LookRotation((targetPos - character.Position.RemoveY()).InsertY());
|
|||
|
else
|
|||
|
faceDir = null;
|
|||
|
character.SyncMove(character.Position.RemoveY(), targetPos, MoveState.TeleMove, speed, faceDir, teleMoveExtraAction);
|
|||
|
|
|||
|
//是否需要播放附加动作
|
|||
|
if (packet.HasAnimaId && packet.AnimaId > -1 && character.AnimLogic != null)
|
|||
|
{
|
|||
|
character.AnimLogic.Play(packet.AnimaId);
|
|||
|
//现在这里播放击退效果 todo临时的
|
|||
|
//_objChar.PlayEffect(121);
|
|||
|
}
|
|||
|
return (uint) PACKET_EXE.PACKET_EXE_CONTINUE;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|