예제 #1
0
    //private void OnGUI()
    //{
    //    if (Target == null || !_hasCamera) return;
    //    if (_bTouchMouse) return;

    //    if (TouchRect.width == 0)
    //    {
    //        TouchRect = EasyJoystick.GetTouchRect();
    //    }

    //    if (UnityEngine.Event.current.type == EventType.MouseDown)
    //    {
    //        if (EventSystem.current.IsPointerOverGameObject())
    //        {
    //            _bVaildDrag = false;
    //           // _dragging = false;
    //            return;
    //        }
    //        //记录鼠标按下的位置
    //        _firstPoint = UnityEngine.Event.current.mousePosition;

    //        if ((TouchRect.width != 0) && !TouchRect.Contains(_firstPoint))
    //        {
    //            _bVaildDrag = true;
    //            //  Debug.Log("_bVaildDrag__bVaildDrag__bVaildDrag!!::"+ TouchRect + ",,_firstPoint::"+ _firstPoint);
    //        }
    //        else
    //        {
    //            _bVaildDrag = false;
    //        }
    //        //  Debug.Log("_firstPoint::" + _firstPoint + ",_bVaildDrag::" + _bVaildDrag);
    //     //   _dragging = false;
    //    }
    //    else if (UnityEngine.Event.current.type == EventType.MouseDrag)
    //    {
    //        if (!_dragging && EventSystem.current.IsPointerOverGameObject())
    //        {
    //            return;
    //        }

    //        //记录鼠标拖动的位置
    //        if (!_bVaildDrag)
    //        {
    //            _firstPoint = _secondPoint;
    //            return;
    //        }

    //        //    Debug.Log("_bVaildDrag::" + _bVaildDrag);
    //       // _dragging = _bVaildDrag;

    //        _secondPoint = UnityEngine.Event.current.mousePosition;
    //        Vector2 slideDirection = _secondPoint - _firstPoint;
    //        float x = slideDirection.x, y = slideDirection.y;

    //        if (y < x && y > -x) // right
    //        {
    //            //_directorToLeft = false;
    //            //_directorToRight = true;
    //        }
    //        else if (y > x && y < -x)// left
    //        {
    //            //_directorToLeft = true;
    //            //_directorToRight = false;
    //        }
    //        else
    //        {
    //            //_directorToLeft = false;
    //            //_directorToRight = false;
    //        }

    //       // _bBeforeDragging = _dragging;
    //        //if (!TouchRect.Contains(_firstPoint)  && _bVaildDrag)
    //        //{
    //        //    _bBeforeDragging = true;
    //        //}


    //        _firstPoint = _secondPoint;
    //    }
    //    else if (UnityEngine.Event.current.type == EventType.MouseUp)
    //    {
    //        //Debug.Log("Up_up_bVaildDrag::"+ _bVaildDrag);
    //     //   _dragging = false;
    //        _bVaildDrag = false;
    //    }
    //    // Debug.Log("Event.current.type::" + Event.current.type);
    //}

    #endregion

    #region 3)============= 设置对象旋转角度、forward等相关计算操作 =============

    /// <summary>
    /// 设置目标对象
    /// </summary>
    /// <param name="targetObj"></param>
    public void SetTarget(Transform targetObj)
    {
        if (Target == null)
        {
            Target              = targetObj;
            _motionObj          = Target.GetComponent <CharacterMotion>();
            _avatarObj          = Target.GetComponent <Avatar>();
            _childTransformObj  = Target.transform.Find(PlayerCommonName.ChildName).GetComponent <U_FPTransform>();
            _playerTransformObj = Target.GetComponent <U_FPTransform>();
            _rayPointObj        = _childTransformObj.transform.Find("RayPoint");
            Debug.Log("SetTarget is success!!");
        }
    }
예제 #2
0
    public void init()
    {
        if (_ufpTransform != null)
        {
            return;
        }
        MoveSpeed    = 2f;        //移动速度
        _verCurSpeed = MoveSpeed; //设置为移动速度一致
        _childObj    = gameObject.transform.Find(PlayerCommonName.ChildName).GetComponent <U_FPTransform>();

        MoveByInkFlag = true;
        _layerNum     = LayerMask.NameToLayer("RenderLayer");
        _ufpTransform = gameObject.GetComponent <U_FPTransform>();
    }
    /// <summary>
    /// 改变朝向,改变forward的朝向跟摄像机的朝向一样
    /// </summary>
    /// <param name="forward"></param>
    public void ChangeAvatarForward(FPVector toForward)
    {
        JoystickAngle = 90;
        if (AvatarForm == E_AvatarForm.PERSON_STATE)
        {
            _ufpTransformChildObj.ChangeForward(toForward);
            return;
        }

        RaycastHit _groundHit;

        _characterMotionObj.RayGroundInfo(out _groundHit);
        FPVector _fpNormal = _ufpTransformChildObj.ChangeVec3ToTSVec(_groundHit.normal);

        if (_groundHit.normal == Vector3.up)
        {
            _ufpTransformChildObj.ChangeForward(toForward);

            // _childObj.forward = toForward;
            JoystickAngle = 90;
            return;
        }
        else
        {
            FPVector left       = FPVector.Cross(toForward, _fpNormal); //切线
            FPVector newForward = FPVector.Cross(_fpNormal, left);

            if (_fpNormal == FPVector.zero)
            {
                Debug.Log("forward:::" + toForward);
                return;
            }
            FPQuaternion  newRotation      = FPQuaternion.LookRotation(newForward, _fpNormal);
            U_FPTransform ComMoveTransform = ComMoveFollowObj.GetFPTransform();
            FPQuaternion  comObject        = new FPQuaternion(ComMoveTransform.rotation.x, ComMoveTransform.rotation.y,
                                                              ComMoveTransform.rotation.z, ComMoveTransform.rotation.w);

            // ComMoveFollowObj.transform.rotation = newRotation;
            ComMoveTransform.SetRotation(newRotation);

            FPVector comForward   = ComMoveTransform.forward;
            FPVector childForward = _ufpTransformChildObj.forward;
            FP       DragAngle    = FPVector.Angle(comForward, childForward);
            DragAngle = FPMath.Sign(FPVector.Cross(childForward, comForward).y) * DragAngle;
            ChangeAvaterForward(DragAngle);          //改变对象的旋转数值
            ComMoveTransform.SetRotation(comObject); //恢复摄像机原来的rotation数值
        }
    }
예제 #4
0
    private void Awake()
    {
        _motionObj          = Target.GetComponent <CharacterMotion>();
        _avatarObj          = Target.GetComponent <Avatar>();
        _childTransformObj  = Target.transform.Find(PlayerCommonName.ChildName).GetComponent <U_FPTransform>();
        _playerTransformObj = Target.GetComponent <U_FPTransform>();
        _rayPointObj        = _childTransformObj.transform.Find("RayPoint");
        _ufpTransform       = gameObject.GetComponent <U_FPTransform>();
        Debug.Log("SetTarget is success!!");

        //test ..先主动加载摄像机
        if (gameObject.transform.parent.transform.name == "AvatarPlayer")
        {
            SetCameraObj();
        }
    }
    public void Init()
    {
        AvatarState       = E_AvatarState.AS_ALIVE;
        AvatarMotion      = E_AvatarMotionState.AM_IDLE;
        AvatarForm        = E_AvatarForm.PERSON_STATE;
        _beforeAvatarForm = E_AvatarForm.PERSON_STATE;
        AvatarBehavior    = E_AvatarBehavior.B_NONE;

        _motionStateCount = Enum.GetValues(typeof(E_AvatarMotionState)).Length;

        _childObj             = gameObject.transform.Find(PlayerCommonName.ChildName);
        _ufpTransformObj      = transform.GetComponent <U_FPTransform>();
        _ufpTransformChildObj = _childObj.GetComponent <U_FPTransform>();
        _characterMotionObj   = transform.GetComponent <CharacterMotion>();

        _hp = HpMax;
        AutoRenderSplatData(AvatarEntityId);

        Debug.Log("AvatarId::" + AvatarEntityId + "  == > InitInitInitInitInitInitInitInitInitInit!!!");
    }