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:
parent
3408f47c13
commit
4c2e23615d
8 changed files with 139 additions and 103 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
switch (_characterStateMachine.movementStates)
|
||||
{
|
||||
case ForceModes.force:
|
||||
_characterRigidbody.AddForce(movement, ForceMode.Force);
|
||||
case CharacterStateMachine.MovementStates.Walking:
|
||||
Walking();
|
||||
break;
|
||||
case ForceModes.acceleration:
|
||||
_characterRigidbody.AddForce(movement, ForceMode.Acceleration);
|
||||
|
||||
case CharacterStateMachine.MovementStates.Crouching:
|
||||
Crouching();
|
||||
break;
|
||||
case ForceModes.impulse:
|
||||
_characterRigidbody.AddForce(movement.normalized, ForceMode.Impulse);
|
||||
break;
|
||||
case ForceModes.velocityChange:
|
||||
_characterRigidbody.AddForce(movement.normalized, ForceMode.VelocityChange);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 68e69a066cfcd3b45b91db0b5825eea3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -4,7 +4,6 @@ using UnityEngine.InputSystem;
|
|||
|
||||
namespace TTTSC.Player.Character.Controller
|
||||
{
|
||||
[RequireComponent(typeof(CharacterStateMachine))]
|
||||
public class PlayerInputReceiver : MonoBehaviour
|
||||
{
|
||||
private float _lookX, _lookY;
|
||||
|
|
|
|||
Loading…
Reference in a new issue