MoveObjTo() static private méthode

static private MoveObjTo ( EntityInfo obj, Vector3 position ) : void
obj EntityInfo
position Vector3
Résultat void
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
            }
        }
Exemple #14
0
        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);
        }
Exemple #16
0
        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);
            }
        }