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); }
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; } }
// 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); } }
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); }