|
|
|
|
@ -69,7 +69,7 @@ namespace Game
|
|
|
|
|
StunkRate = 1,
|
|
|
|
|
OwnerEntity = Owner.ID(),
|
|
|
|
|
HitEntity = targetID,
|
|
|
|
|
HitDir = castDir,
|
|
|
|
|
HitDir = GetHitDir(param.hitDirType, target, castPos, castDir),
|
|
|
|
|
SkillId = skill.SkillId.Value,
|
|
|
|
|
IsBreak = true,
|
|
|
|
|
hitIndex = i,
|
|
|
|
|
@ -90,6 +90,32 @@ namespace Game
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Vector3 GetHitDir(EHitDirType hitDirType, GameEntity target, Vector3 castPos, Vector3 castDir)
|
|
|
|
|
{
|
|
|
|
|
var targetPos = target.Pos();
|
|
|
|
|
var targetDir = targetPos - castPos;
|
|
|
|
|
switch (hitDirType)
|
|
|
|
|
{
|
|
|
|
|
case EHitDirType.Center:
|
|
|
|
|
//从中心到外围
|
|
|
|
|
return targetDir;
|
|
|
|
|
case EHitDirType.Backward:
|
|
|
|
|
//从前往后
|
|
|
|
|
return -castDir;
|
|
|
|
|
case EHitDirType.Forward:
|
|
|
|
|
//从后往前
|
|
|
|
|
return castDir;
|
|
|
|
|
case EHitDirType.Clockwise:
|
|
|
|
|
//顺时针
|
|
|
|
|
return Vector3.Cross(targetDir, Vector3.down * (Owner.move.IsRight ? 1 : -1));
|
|
|
|
|
case EHitDirType.CounterClockwise:
|
|
|
|
|
//逆时针
|
|
|
|
|
return Vector3.Cross(targetDir, Vector3.up * (Owner.move.IsRight ? 1 : -1));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return targetDir;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private float GetRank(EHitDirType hitDirType, GameEntity target, Vector3 castPos, Vector3 castDir)
|
|
|
|
|
{
|
|
|
|
|
//小在前
|
|
|
|
|
|