Added crouching and sprinting

added crouching and sprinting that works but I might change how crouching is done later, but for now it's god enough
This commit is contained in:
Mikolaj 2022-04-27 00:14:35 +02:00
parent 3408f47c13
commit 4c2e23615d
8 changed files with 139 additions and 103 deletions

View file

@ -336,6 +336,7 @@ GameObject:
- component: {fileID: 275207158}
- component: {fileID: 275207159}
- component: {fileID: 275207161}
- component: {fileID: 275207163}
- component: {fileID: 275207162}
m_Layer: 0
m_Name: Alive
@ -397,7 +398,6 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_ReffrenceHub: {fileID: 1551772761}
moveType: 1
_hoverForceMode: 3
_moveForceMode: 2
_characterDrag: 10
@ -435,10 +435,10 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
characterRigidbody: {fileID: 1551772756}
moveSpeed: 70
airControlStrength: 70
crouchSpeedDecrease: 0
sprintSpeedIncrease: 0
moveSpeed: 1
airControlStrength: 0.1
crouchSpeedDecrease: 2
sprintSpeedIncrease: 1.5
ladderClimbingSpeed: 0
jumpPower: 0
crouchHeight: 0
@ -486,6 +486,19 @@ MonoBehaviour:
enteredLadderFromTop: 0
topLadder: {fileID: 0}
bottomLadder: {fileID: 0}
--- !u!114 &275207163
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 275207155}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 68e69a066cfcd3b45b91db0b5825eea3, type: 3}
m_Name:
m_EditorClassIdentifier:
_reffrenceHub: {fileID: 0}
--- !u!1 &351313843
GameObject:
m_ObjectHideFlags: 0
@ -3072,7 +3085,6 @@ GameObject:
- component: {fileID: 1551772752}
- component: {fileID: 1551772758}
- component: {fileID: 1551772756}
- component: {fileID: 1551772762}
m_Layer: 0
m_Name: Player_Ghost
m_TagString: Untagged
@ -3171,29 +3183,6 @@ MonoBehaviour:
playerInputReceiver: {fileID: 1551772752}
characterHover: {fileID: 275207159}
characterStateChanger: {fileID: 275207161}
--- !u!114 &1551772762
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1551772751}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 11afecc1cbbd8e8449477483a5577cb0, type: 3}
m_Name:
m_EditorClassIdentifier:
characterState: 0
movementStates: 0
ceilingDetected: 0
eligibleForStep: 0
onLadder: 0
topOnLadder: 0
bottomOnLadder: 0
enteredLadderFromBottom: 0
enteredLadderFromTop: 0
topLadder: {fileID: 0}
bottomLadder: {fileID: 0}
--- !u!1 &1591108313
GameObject:
m_ObjectHideFlags: 0

View file

@ -4,7 +4,9 @@ namespace TTTSC.Player.Character
{
public class CharacterReffrenceHub : MonoBehaviour
{
[Header("-----------Misc------------")]
public Rigidbody characterRigidbody;
[Header("----------Scripts-----------")]
public PlayerStateEnforcer playerStateEnforcrer;
public PlayerStateMachine playerStateMachine;
public Controller.CharacterMovementConfig characterMovementConfig;

View file

@ -15,8 +15,6 @@ namespace TTTSC.Player.Character.Controller.Alive
private CharacterHover _characterHover;
private PlayerInputReceiver _playerInputReceiver;
private Rigidbody _characterRigidbody;
[SerializeField, Tooltip("use Velocity mode for testing interactable objects + other things like pickackable items")]
private MoveTypes moveType;
[SerializeField]
private ForceModes _hoverForceMode, _moveForceMode;
@ -52,12 +50,6 @@ namespace TTTSC.Player.Character.Controller.Alive
#endregion
enum MoveTypes
{
Velocity,
AddForce
}
enum ForceModes
{
force,
@ -69,10 +61,6 @@ namespace TTTSC.Player.Character.Controller.Alive
private void FixedUpdate()
{
//if (_characterRigidbody.velocity.x != 0f || _characterRigidbody.velocity.z != 0f)
//Debug.Log("character speed x: " + _characterRigidbody.velocity.x + "character speed z:" + _characterRigidbody.velocity.z);
Vector3 downVector = transform.TransformDirection(Vector3.down);
Drag();
@ -80,18 +68,13 @@ namespace TTTSC.Player.Character.Controller.Alive
switch (_characterStateMachine.characterState)
{
case CharacterStateMachine.CharacterStates.Grounded:
switch (moveType)
{
case MoveTypes.Velocity:
VelocityChangeMover();
break;
case MoveTypes.AddForce:
AddForceMover();
break;
}
_characterDrag = 10;
Move();
break;
case CharacterStateMachine.CharacterStates.InAir:
_characterDrag = 0;
InAirMove();
break;
@ -101,38 +84,6 @@ namespace TTTSC.Player.Character.Controller.Alive
_characterRigidbody.AddForce(_characterHover.hoverForces * downVector, ForceMode.VelocityChange);
}
private void VelocityChangeMover()
{
Vector3 movement = _characterMovementConfig.moveSpeed * _moveDirection.x * Time.deltaTime * transform.right + _characterRigidbody.velocity.y * transform.up + _characterMovementConfig.moveSpeed * _moveDirection.y * Time.deltaTime * transform.forward;
_characterRigidbody.velocity = movement;
}
private void AddForceMover()
{
switch (_characterStateMachine.movementStates)
{
case CharacterStateMachine.MovementStates.Walking:
Walk();
break;
case CharacterStateMachine.MovementStates.Crouching:
break;
case CharacterStateMachine.MovementStates.Sprinting:
break;
}
}
private void Drag()
@ -145,37 +96,73 @@ namespace TTTSC.Player.Character.Controller.Alive
_characterRigidbody.velocity = newVelocity;
}
private void Walk()
private void Move()
{
Vector3 movement = _characterMovementConfig.moveSpeed * _moveDirection.x * Time.deltaTime * transform.right + _characterMovementConfig.moveSpeed * _moveDirection.y * Time.deltaTime * transform.forward;
if (_characterStateMachine.characterState == CharacterStateMachine.CharacterStates.Grounded)
switch (_moveForceMode)
{
case ForceModes.force:
_characterRigidbody.AddForce(movement, ForceMode.Force);
break;
case ForceModes.acceleration:
_characterRigidbody.AddForce(movement, ForceMode.Acceleration);
break;
case ForceModes.impulse:
_characterRigidbody.AddForce(movement.normalized, ForceMode.Impulse);
break;
case ForceModes.velocityChange:
_characterRigidbody.AddForce(movement.normalized, ForceMode.VelocityChange);
break;
}
switch (_characterStateMachine.movementStates)
{
case CharacterStateMachine.MovementStates.Walking:
Walking();
break;
case CharacterStateMachine.MovementStates.Crouching:
Crouching();
break;
case CharacterStateMachine.MovementStates.Sprinting:
Sprinting();
break;
}
}
private void InAirMove()
{
Vector3 movement = _characterMovementConfig.airControlStrength * _moveDirection.x * Time.deltaTime * transform.right + _characterMovementConfig.airControlStrength * _moveDirection.y * Time.deltaTime * transform.forward;
Vector3 movement = _moveDirection.x * Time.deltaTime * transform.right + _moveDirection.y * Time.deltaTime * transform.forward;
Vector3 normalizedMovement = movement.normalized * _characterMovementConfig.airControlStrength;
if (_characterStateMachine.movementStates == CharacterStateMachine.MovementStates.Walking)
{
_characterRigidbody.AddForce(movement.normalized, ForceMode.Impulse);
_characterRigidbody.AddForce(normalizedMovement, ForceMode.Impulse);
}
}
private void Jump()
{
}
private void Walking()
{
Vector3 movement = _moveDirection.x * Time.deltaTime * transform.right + _moveDirection.y * Time.deltaTime * transform.forward;
Vector3 normalizedMovement = movement.normalized * _characterMovementConfig.moveSpeed;
_characterRigidbody.AddForce(normalizedMovement, ForceMode.Impulse);
}
private void Crouching()
{
Vector3 movement = _moveDirection.x * Time.deltaTime * transform.right + _moveDirection.y * Time.deltaTime * transform.forward;
Vector3 normalizedMovement = movement.normalized * _characterMovementConfig.moveSpeed / _characterMovementConfig.crouchSpeedDecrease;
_characterRigidbody.AddForce(normalizedMovement, ForceMode.Impulse);
}
private void Sprinting()
{
Vector3 movement = _moveDirection.x * Time.deltaTime * transform.right + _moveDirection.y * Time.deltaTime * transform.forward;
Vector3 normalizedMovement = movement.normalized * _characterMovementConfig.moveSpeed * _characterMovementConfig.sprintSpeedIncrease;
_characterRigidbody.AddForce(normalizedMovement, ForceMode.Impulse);
}
}
}

View file

@ -0,0 +1,48 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace TTTSC.Player.Character.Controller
{
public class CharacterStateEnforcer : MonoBehaviour
{
[SerializeField]
private CharacterReffrenceHub _reffrenceHub;
private CharacterHover _characterHover;
private CharacterStateMachine _characterStateMachine;
// Start is called before the first frame update
void Start()
{
_characterHover = GetComponent<CharacterHover>();
_characterStateMachine = GetComponent<CharacterStateMachine>();
}
// Update is called once per frame
void FixedUpdate()
{
switch (_characterStateMachine.movementStates)
{
default:
CharacterDefault();
break;
case CharacterStateMachine.MovementStates.Crouching:
CharacterCrouch();
break;
}
}
private void CharacterCrouch()
{
_characterHover.hoverHight = 1f;
}
private void CharacterDefault()
{
_characterHover.hoverHight = 1.4f;
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 68e69a066cfcd3b45b91db0b5825eea3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -4,7 +4,6 @@ using UnityEngine.InputSystem;
namespace TTTSC.Player.Character.Controller
{
[RequireComponent(typeof(CharacterStateMachine))]
public class PlayerInputReceiver : MonoBehaviour
{
private float _lookX, _lookY;