示例#1
0
        private UnityEngine.Vector3 CalcScenePos(GameObject obj, UnityEngine.Vector3 touch_pos)
        {
            UnityEngine.Vector3 obj_pos = obj.transform.position;
            UnityEngine.Vector3 end_pos = touch_pos;
            end_pos.y += 3;
            obj_pos.y  = end_pos.y;
            UnityEngine.RaycastHit hitinfo;
            int layer = 1 << LayerMask.NameToLayer("AirWall");

            if (Physics.Linecast(obj_pos, end_pos, out hitinfo, layer))
            {
                return(TriggerUtil.GetGroundPos(hitinfo.point));
            }
            return(touch_pos);
        }
        private UnityEngine.Vector3 CalcValidRandomPos(UnityEngine.Vector3 start_pos, UnityEngine.Vector3 random_pos)
        {
            UnityEngine.Vector3 obj_pos = start_pos;
            UnityEngine.Vector3 end_pos = random_pos;
            end_pos.y += 3;
            obj_pos.y  = end_pos.y;
            UnityEngine.RaycastHit hitinfo;
            int layer = 1 << LayerMask.NameToLayer("AirWall");

            if (Physics.Linecast(obj_pos, end_pos, out hitinfo, layer))
            {
                return(TriggerUtil.GetGroundPos(hitinfo.point));
            }
            else
            {
                return(TriggerUtil.GetGroundPos(end_pos));
            }
        }
示例#3
0
        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);
        }