コード例 #1
0
 void ClimbObject(GameObject obj, RaycastHit hit)
 {
     m_psm.SetPlayerPose(scr_PSM.PlayerPose.pose_wallclimbing);
     transform.position = Vector3.MoveTowards(transform.position, new Vector3(transform.position.x,
                                                                              obj.transform.position.y + obj.GetComponent <Collider>().bounds.extents.y - 0.5f, transform.position.z), m_ClimbingSpeed);
     m_rgd.velocity = new Vector3(0, 0, 0);
     //  transform.rotation = new Quaternion(hit.normal.x, hit.normal.y,hit.normal.z, transform.rotation.w);
 }
コード例 #2
0
 void Run()
 {
     if (Mathf.Abs(forwardInput) > m_inputSettings.m_inputDelay)
     {
         playerStateManager.SetPlayerPose(scr_PSM.PlayerPose.pose_running);
         velocity.z = m_moveSettings.m_ForwardSpeed * forwardInput;
     }
     else
     {
         playerStateManager.SetPlayerPose(scr_PSM.PlayerPose.pose_idle);
         velocity.z = 0;
     }
 }
コード例 #3
0
    // Update is called once per frame
    void Update()
    {
        /* switch (m_ropeState)
         * {
         *   case ropeState.ropestate_climbing:
         *       break;
         *   case ropeState.ropestate_skimming:
         *       break;
         *   case ropeState.ropestate_swinging:
         *       break;
         * }*/
        //float hInput = Input.GetAxis("Horizontal");

        float vInput = Input.GetAxis("Vertical");

        if (currentlyAttached)
        {
            if (vInput > 0)
            {
                print("forward");
                TraverseForward(vInput);
                m_PSM.SetPlayerPose(scr_PSM.PlayerPose.pose_climbing);
            }
            else if (vInput < 0)
            {
                print("backward");
                TraverseBackward(vInput);
                m_PSM.SetPlayerPose(scr_PSM.PlayerPose.pose_climbing);
            }
        }

        if (Input.GetButton(s_pullRope))
        {
            PullRope();
            m_PSM.SetRopeState(scr_PSM.RopeState.ropestate_pulling);
        }
        if (Input.GetButton(s_pushRope))
        {
            PushRope();
        }
        if (Input.GetButton(s_holdOntoRope))
        {
            HoldOntoRope();
            m_PSM.SetPlayerPose(scr_PSM.PlayerPose.pose_climbing);
            m_PSM.SetRopeState(scr_PSM.RopeState.ropestate_hanging);
        }
        else if (Input.GetButtonUp(s_holdOntoRope))
        {
            m_PSM.SetRopeState(scr_PSM.RopeState.ropestate_none);
        }
    }
コード例 #4
0
    public void Move(Vector3 move, bool crouch, bool jump, bool sliding, bool climbing, Vector3 lookPos, bool aim)
    {
        // convert the world relative moveInput vector into a local-relative
        // turn amount and forward amount required to head in the desired
        // direction.

        if (move.magnitude > 1f)
        {
            move.Normalize();
        }
        move = transform.InverseTransformDirection(move);
        CheckGroundStatus();
        move                     = Vector3.ProjectOnPlane(move, m_GroundNormal);
        m_TurnAmount             = Mathf.Atan2(move.x, move.z);
        m_ForwardAmount          = move.z;
        m_Left                   = move.x;
        this.isAiming            = aim;
        this.isSliding           = sliding;
        this.currentLookPosition = lookPos;
        this.isClimbing          = climbing;
        if (!isAiming && m_PSM.GetPlayerState(true) == scr_PSM.Playerstate.state_grounded)
        {
            ApplyExtraTurnRotation();
        }
        else if (isAiming)
        {
            // m_Player.transform.forward = Camera.main.transform.forward;
            //
            m_Player.transform.forward = new Vector3(Camera.main.transform.forward.x, m_Player.transform.forward.y, Camera.main.transform.forward.z);
        }
        Sliding();
        // control and velocity handling is different when grounded and airborne:
        if (m_IsGrounded)
        {
            HandleGroundedMovement(crouch, jump);
            m_PSM.SetPlayerState(scr_PSM.Playerstate.state_grounded);
            m_PSM.SetPlayerPose(scr_PSM.PlayerPose.pose_running);
        }
        else if (m_PSM.GetPlayerPose(true) != scr_PSM.PlayerPose.pose_wallclimbing)
        {
            HandleAirborneMovement();
            m_PSM.SetPlayerState(scr_PSM.Playerstate.state_airborne);
        }
        ScaleCapsuleForCrouching(crouch);
        PreventStandingInLowHeadroom();
        JumpHandler();
        // send input and other state parameters to the animator
        UpdateAnimator(move);
    }