private void SetTransformRelativeSelf(GameObject obj) { Vector3 new_pos = obj.transform.TransformPoint(m_Postion); TriggerUtil.MoveObjTo(obj, new_pos); obj.transform.rotation *= Quaternion.Euler(m_Rotate); }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } EntityInfo obj = senderObj.GfxObj; if (obj == null) { return(false); } if (curSectionTime < StartTime) { return(true); } if (StartTime + m_DurationTime < curSectionTime) { return(false); } EntityInfo targetObj = senderObj.TargetGfxObj; if (null != targetObj) { Vector3 srcPos = targetObj.GetMovementStateInfo().GetPosition3D(); float dir = targetObj.GetMovementStateInfo().GetFaceDir(); Vector3 pos = Geometry.TransformPoint(srcPos, m_RelativeOffset, dir); TriggerUtil.MoveObjTo(obj, pos); } return(true); }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } GameObject obj = senderObj.GfxObj; if (obj == null) { return(false); } GameObject targetObj = senderObj.TargetGfxObj; if (null != senderObj.TrackEffectObj) { obj = senderObj.TrackEffectObj; targetObj = senderObj.GfxObj; } if (curSectionTime < StartTime) { return(true); } if (m_IsForRoundMove) { Vector3 srcPos = obj.transform.position; Vector3 targetPos = Vector3.zero; if (null != targetObj) { targetPos = targetObj.transform.position; } TriggerUtil.GetSkillStartPosition(srcPos, senderObj.ConfigData, instance, senderObj.ActorId, senderObj.TargetActorId, ref targetPos); if (targetPos.sqrMagnitude > Geometry.c_FloatPrecision) { float angle = Geometry.GetYRadian(new ScriptRuntime.Vector2(srcPos.x, srcPos.z), new ScriptRuntime.Vector2(targetPos.x, targetPos.z)); ScriptRuntime.Vector2 newPos = new ScriptRuntime.Vector2(targetPos.x, targetPos.z) + Geometry.GetRotate(new ScriptRuntime.Vector2(m_RelativeOffset.x, m_RelativeOffset.z), angle); targetPos = new Vector3(newPos.X, srcPos.y + m_RelativeOffset.y, newPos.Y); TriggerUtil.MoveObjTo(obj, targetPos); } } else if (null != targetObj) { //Vector3 pos = targetObj.transform.TransformPoint(m_RelativeOffset); Vector3 srcPos = obj.transform.position; Vector3 pos = Vector3.zero; if (null != targetObj) { pos = targetObj.transform.position; } TriggerUtil.GetSkillStartPosition(srcPos, senderObj.ConfigData, instance, senderObj.ActorId, senderObj.TargetActorId, ref pos); pos.y = srcPos.y; TriggerUtil.MoveObjTo(obj, pos); } return(false); }
private void SetTransformRelativeSelf(EntityInfo obj) { Vector3 new_pos = TriggerUtil.TransformPoint(obj.GetMovementStateInfo().GetPosition3D(), m_Postion, obj.GetMovementStateInfo().GetFaceDir()); TriggerUtil.MoveObjTo(obj, new_pos); float dir = obj.GetMovementStateInfo().GetFaceDir(); float radian = (dir + Geometry.DegreeToRadian((Helper.Random.NextFloat() - 0.5f) * m_Rotate.Y)) % (float)(Math.PI * 2); obj.GetMovementStateInfo().SetFaceDir(radian); }
private void AttachToObjectForRandomRotate(EntityInfo obj, EntityInfo owner) { Vector3 world_pos = TriggerUtil.TransformPoint(owner.GetMovementStateInfo().GetPosition3D(), m_Postion, owner.GetMovementStateInfo().GetFaceDir()); TriggerUtil.MoveObjTo(obj, world_pos); float dir = obj.GetMovementStateInfo().GetFaceDir(); float radian = (dir + Geometry.DegreeToRadian((Helper.Random.NextFloat() - 0.5f) * m_RandomRotate.Y)) % (float)(Math.PI * 2); obj.GetMovementStateInfo().SetFaceDir(radian); }
private Vector3 Move(GameObject obj, Vector3 speed_vect, Vector3 accel_vect, float time) { m_StartTransform.transform.position = obj.transform.position; m_StartTransform.transform.rotation = obj.transform.rotation; Vector3 local_motion = speed_vect * time + accel_vect * time * time / 2; Vector3 word_target_pos; while (local_motion.magnitude > m_MaxMoveStep) { Vector3 child = Vector3.ClampMagnitude(local_motion, m_MaxMoveStep); local_motion = local_motion - child; word_target_pos = m_StartTransform.transform.TransformPoint(child); if (!m_IsFreeMove) { if (!TriggerUtil.RaycastNavmesh(obj.transform.position, word_target_pos)) { TriggerUtil.MoveObjTo(obj, word_target_pos); } else { word_target_pos = TriggerUtil.GetGroundPos(word_target_pos); TriggerUtil.MoveObjTo(obj, word_target_pos); } } else { TriggerUtil.MoveObjTo(obj, word_target_pos); } m_StartTransform.transform.position = obj.transform.position; } word_target_pos = m_StartTransform.transform.TransformPoint(local_motion); if (!m_IsFreeMove) { if (!TriggerUtil.RaycastNavmesh(obj.transform.position, word_target_pos)) { TriggerUtil.MoveObjTo(obj, word_target_pos); } else { word_target_pos = TriggerUtil.GetGroundPos(word_target_pos); TriggerUtil.MoveObjTo(obj, word_target_pos); } } else { TriggerUtil.MoveObjTo(obj, word_target_pos); } return(speed_vect + accel_vect * time); }
private void AttachToObject(GameObject obj, GameObject owner) { Transform parent = TriggerUtil.GetChildNodeByName(owner, m_BoneName); if (parent == null) { parent = owner.transform; } obj.transform.SetParent(parent); Vector3 world_pos = parent.TransformPoint(m_Postion); TriggerUtil.MoveObjTo(obj, world_pos); obj.transform.localRotation = Quaternion.Euler(m_Rotate); if (!m_IsAttach) { obj.transform.SetParent(null); } }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } GameObject obj = senderObj.GfxObj; if (null == obj) { return(false); } GameObject targetObj = senderObj.TargetGfxObj; if (null != senderObj.TrackEffectObj) { obj = senderObj.TrackEffectObj; targetObj = senderObj.GfxObj; } if (curSectionTime < StartTime) { return(true); } else if (curSectionTime <= StartTime + m_Duration) { if (!Prepare(senderObj, obj, targetObj)) { return(false); } float t = (float)(int)(curSectionTime - StartTime) / 1000.0f; float disty = m_YVelocity * t - m_G * t * t / 2; float dist = TriggerUtil.ConvertToSecond(delta) * m_Velocity; Vector3 targetPos = obj.transform.position + m_Forward * dist; targetPos.y = m_InitY + disty; TriggerUtil.MoveObjTo(obj, targetPos); return(true); } else { return(false); } }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } GameObject obj = senderObj.GfxObj; if (obj == null) { return(false); } GameObject targetObj = senderObj.TargetGfxObj; if (null != senderObj.TrackEffectObj) { obj = senderObj.TrackEffectObj; targetObj = senderObj.GfxObj; } if (curSectionTime < StartTime) { return(true); } if (StartTime + m_DurationTime < curSectionTime) { return(false); } if (null != targetObj && m_ObjPath == "vector3") { Vector3 pos = targetObj.transform.TransformPoint(m_RelativeOffset); TriggerUtil.MoveObjTo(obj, pos); } else { var tobj = GameObject.Find(m_ObjPath); if (null != tobj) { TriggerUtil.MoveObjTo(obj, tobj.transform.position); } } return(true); }
private Vector3 Move(EntityInfo obj, Vector3 speed_vect, Vector3 accel_vect, float time) { Vector3 local_motion = speed_vect * time + accel_vect * time * time / 2; Vector3 word_target_pos; while (local_motion.Length() > m_MaxMoveStep) { Vector3 child = local_motion; child.Normalize(); child *= m_MaxMoveStep; local_motion = local_motion - child; word_target_pos = Geometry.TransformPoint(m_StartPos, child, m_StartDir); TriggerUtil.MoveObjTo(obj, word_target_pos); m_StartPos = word_target_pos; } word_target_pos = Geometry.TransformPoint(m_StartPos, local_motion, m_StartDir); TriggerUtil.MoveObjTo(obj, word_target_pos); return(speed_vect + accel_vect * time); }
private Vector3 Move(GameObject obj, Vector3 speed_vect, Vector3 accel_vect, float time) { m_StartTransform.transform.position = obj.transform.position; m_StartTransform.transform.rotation = obj.transform.rotation; Vector3 local_motion = speed_vect * time + accel_vect * time * time / 2; Vector3 word_target_pos; while (local_motion.magnitude > m_MaxMoveStep) { Vector3 child = Vector3.ClampMagnitude(local_motion, m_MaxMoveStep); local_motion = local_motion - child; word_target_pos = m_StartTransform.transform.TransformPoint(child); TriggerUtil.MoveObjTo(obj, word_target_pos); m_StartTransform.transform.position = obj.transform.position; } word_target_pos = m_StartTransform.transform.TransformPoint(local_motion); TriggerUtil.MoveObjTo(obj, word_target_pos); return(speed_vect + accel_vect * time); }
private void AttachToObjectForRandomRotate(GameObject obj, GameObject owner) { Transform parent = TriggerUtil.GetChildNodeByName(owner, m_BoneName); if (parent == null) { parent = owner.transform; } obj.transform.SetParent(parent); Vector3 world_pos = parent.TransformPoint(m_Postion); TriggerUtil.MoveObjTo(obj, world_pos); Vector3 resultrotate = new Vector3( m_Rotate.x + UnityEngine.Random.Range(m_RandomRotate.x / -2, m_RandomRotate.x / 2), m_Rotate.y + UnityEngine.Random.Range(m_RandomRotate.y / -2, m_RandomRotate.y / 2), m_Rotate.z + UnityEngine.Random.Range(m_RandomRotate.z / -2, m_RandomRotate.z / 2)); obj.transform.localRotation = Quaternion.Euler(resultrotate); if (!m_IsAttach) { obj.transform.SetParent(null); } }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } GameObject obj = senderObj.GfxObj; if (null == obj) { return(false); } GameObject targetObj = senderObj.TargetGfxObj; if (null != senderObj.TrackEffectObj) { obj = senderObj.TrackEffectObj; targetObj = senderObj.GfxObj; } if (curSectionTime < StartTime) { return(true); } else if (curSectionTime <= StartTime + m_RealDuration) { if (!Prepare(senderObj, instance, obj, targetObj)) { return(false); } if (null != m_Curve && m_Curve.keys.Length >= 2) { float time = Mathf.Clamp01((curSectionTime - StartTime) * 1.0f / m_RealDuration); float val = m_Curve.Evaluate(time); Vector3 targetPos = Vector3.SlerpUnclamped(new Vector3(m_StartPos.x, m_StartPos.y, m_StartPos.z), new Vector3(m_TargetPos.x, m_StartPos.y, m_StartPos.z), val); if (!m_IsFreeMove) { if (!TriggerUtil.RaycastNavmesh(obj.transform.position, targetPos)) { TriggerUtil.MoveObjTo(obj, targetPos); } else { targetPos = TriggerUtil.GetGroundPos(targetPos); TriggerUtil.MoveObjTo(obj, targetPos); } } else { TriggerUtil.MoveObjTo(obj, targetPos); } } else { float dist = TriggerUtil.ConvertToSecond(delta) * m_RealVelocity; Vector3 targetPos = obj.transform.position + m_Forward * dist; if (!m_IsFreeMove) { if (!TriggerUtil.RaycastNavmesh(obj.transform.position, targetPos)) { TriggerUtil.MoveObjTo(obj, targetPos); } else { targetPos = TriggerUtil.GetGroundPos(targetPos); TriggerUtil.MoveObjTo(obj, targetPos); } } else { TriggerUtil.MoveObjTo(obj, targetPos); } } return(true); } else { Vector3 diff = m_TargetPos - obj.transform.position; if (diff.sqrMagnitude > 0.01f) { Vector3 targetPos = m_TargetPos; if (!m_IsFreeMove) { if (!TriggerUtil.RaycastNavmesh(obj.transform.position, targetPos)) { TriggerUtil.MoveObjTo(obj, targetPos); } else { targetPos = TriggerUtil.GetGroundPos(targetPos); TriggerUtil.MoveObjTo(obj, targetPos); } } else { TriggerUtil.MoveObjTo(obj, targetPos); } } return(false); } }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } Scene scene = senderObj.Scene; EntityInfo obj = senderObj.GfxObj; if (null == obj) { return(false); } bool isTower = scene.EntityController.GetEntityType(senderObj.GfxObj) == (int)EntityTypeEnum.Tower; if (isTower) { return(false); } if (!m_TargetChecked) { m_TargetChecked = true; m_RealDuration = m_Duration; m_RealVelocity = m_Velocity; if (m_RealDuration <= 0) { m_RealDuration += instance.CurSectionDuration; } if (m_RealDuration <= 0) { LogSystem.Warn("jump duration is 0, skill id:{0} dsl skill id:{1}", senderObj.SkillId, instance.DslSkillId); return(false); } EntityInfo targetObj = senderObj.TargetGfxObj; if (null != targetObj) { Vector3 srcPos = obj.GetMovementStateInfo().GetPosition3D(); Vector3 targetPos = targetObj.GetMovementStateInfo().GetPosition3D(); float degree = Geometry.GetYRadian(new ScriptRuntime.Vector2(srcPos.X, srcPos.Z), new ScriptRuntime.Vector2(targetPos.X, targetPos.Z)); ScriptRuntime.Vector2 newPos = new ScriptRuntime.Vector2(targetPos.X, targetPos.Z) + Geometry.GetRotate(new ScriptRuntime.Vector2(m_Offset.X, m_Offset.Z), degree); targetPos = new Vector3(newPos.X, targetPos.Y + m_Offset.Y, newPos.Y); if (m_StopAtTarget == (int)StopAtTargetType.AdjustVelocity) { m_RealVelocity = (long)(1000.0f * (targetPos - srcPos).Length() / m_RealDuration); } else if (m_StopAtTarget == (int)StopAtTargetType.AdjustTime) { m_RealDuration = (long)(1000.0f * (targetPos - targetPos).Length() / m_RealVelocity); CalcYVelocityAndG(); } m_Forward = targetPos - srcPos; m_Forward.Normalize(); } else { m_Forward = Geometry.GetRotate(new Vector3(0, 0, 1), obj.GetMovementStateInfo().GetFaceDir()); } m_InitY = obj.GetMovementStateInfo().PositionY; } if (curSectionTime < StartTime) { return(true); } else if (curSectionTime <= m_RealDuration) { float t = (float)(int)(curSectionTime - StartTime) / 1000.0f; float disty = m_YVelocity * t - m_G * t * t / 2; float dist = TriggerUtil.ConvertToSecond(delta) * m_RealVelocity; Vector3 targetPos = obj.GetMovementStateInfo().GetPosition3D() + m_Forward * dist; targetPos.Y = m_InitY + disty; TriggerUtil.MoveObjTo(obj, targetPos); return(true); } else { return(false); } }
private void AttachToObject(EntityInfo obj, EntityInfo owner) { Vector3 world_pos = TriggerUtil.TransformPoint(owner.GetMovementStateInfo().GetPosition3D(), m_Postion, owner.GetMovementStateInfo().GetFaceDir()); TriggerUtil.MoveObjTo(obj, world_pos); }
public override bool Execute(object sender, SkillInstance instance, long delta, long curSectionTime) { GfxSkillSenderInfo senderObj = sender as GfxSkillSenderInfo; if (null == senderObj) { return(false); } GameObject obj = senderObj.GfxObj; if (null == obj) { return(false); } GameObject targetObj = senderObj.TargetGfxObj; if (null != senderObj.TrackEffectObj) { obj = senderObj.TrackEffectObj; targetObj = senderObj.GfxObj; } bool isTower = !EntityController.Instance.IsMovableEntity(obj); if (isTower) { return(false); } if (!m_TargetChecked) { m_TargetChecked = true; m_RealDuration = m_Duration; m_RealVelocity = m_Velocity; if (m_RealDuration <= 0) { m_RealDuration += instance.CurSectionDuration; } if (m_RealDuration <= 0) { LogSystem.Warn("jump duration is 0, skill id:{0} dsl skill id:{1}", senderObj.SkillId, instance.DslSkillId); return(false); } if (null != targetObj || m_IsForRoundMove) { Vector3 srcPos = obj.transform.position; Vector3 targetPos = Vector3.zero; if (null != targetObj) { targetPos = targetObj.transform.position; } if (m_IsForRoundMove) { TriggerUtil.GetSkillStartPosition(srcPos, senderObj.ConfigData, instance, senderObj.ActorId, senderObj.TargetActorId, ref targetPos); } if (targetPos.sqrMagnitude > Geometry.c_FloatPrecision) { float degree = Geometry.GetYRadian(new ScriptRuntime.Vector2(srcPos.x, srcPos.z), new ScriptRuntime.Vector2(targetPos.x, targetPos.z)); ScriptRuntime.Vector2 newPos = new ScriptRuntime.Vector2(targetPos.x, targetPos.z) + Geometry.GetRotate(new ScriptRuntime.Vector2(m_Offset.x, m_Offset.z), degree); targetPos = new Vector3(newPos.X, targetPos.y + m_Offset.y, newPos.Y); m_TargetPos = targetPos; if (m_StopAtTarget == (int)StopAtTargetType.AdjustVelocity) { m_RealVelocity = (long)(1000.0f * (targetPos - srcPos).magnitude / m_RealDuration); } else if (m_StopAtTarget == (int)StopAtTargetType.AdjustTime) { m_RealDuration = (long)(1000.0f * (targetPos - srcPos).magnitude / m_RealVelocity); CalcYVelocityAndG(); } m_Forward = targetPos - srcPos; m_Forward.y = 0; m_Forward.Normalize(); } else { m_Forward = obj.transform.forward; } } else { m_Forward = obj.transform.forward; } m_InitY = obj.transform.position.y; } if (curSectionTime < StartTime) { return(true); } else if (curSectionTime <= StartTime + m_RealDuration) { float t = (float)(int)(curSectionTime - StartTime) / 1000.0f; float disty = m_YVelocity * t - m_G * t * t / 2; float dist = TriggerUtil.ConvertToSecond(delta) * m_RealVelocity; Vector3 targetPos = obj.transform.position + m_Forward * dist; targetPos.y = m_InitY + disty; TriggerUtil.MoveObjTo(obj, targetPos); return(true); } else { Vector3 srcPos = obj.transform.position; if (m_IsForRoundMove && m_TargetPos.sqrMagnitude > Geometry.c_FloatPrecision) { srcPos = m_TargetPos; } obj.transform.position = new Vector3(srcPos.x, m_InitY, srcPos.z); return(false); } }