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: 275207158}
|
||||||
- component: {fileID: 275207159}
|
- component: {fileID: 275207159}
|
||||||
- component: {fileID: 275207161}
|
- component: {fileID: 275207161}
|
||||||
|
- component: {fileID: 275207163}
|
||||||
- component: {fileID: 275207162}
|
- component: {fileID: 275207162}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Alive
|
m_Name: Alive
|
||||||
|
|
@ -397,7 +398,6 @@ MonoBehaviour:
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_ReffrenceHub: {fileID: 1551772761}
|
_ReffrenceHub: {fileID: 1551772761}
|
||||||
moveType: 1
|
|
||||||
_hoverForceMode: 3
|
_hoverForceMode: 3
|
||||||
_moveForceMode: 2
|
_moveForceMode: 2
|
||||||
_characterDrag: 10
|
_characterDrag: 10
|
||||||
|
|
@ -435,10 +435,10 @@ MonoBehaviour:
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
characterRigidbody: {fileID: 1551772756}
|
characterRigidbody: {fileID: 1551772756}
|
||||||
moveSpeed: 70
|
moveSpeed: 1
|
||||||
airControlStrength: 70
|
airControlStrength: 0.1
|
||||||
crouchSpeedDecrease: 0
|
crouchSpeedDecrease: 2
|
||||||
sprintSpeedIncrease: 0
|
sprintSpeedIncrease: 1.5
|
||||||
ladderClimbingSpeed: 0
|
ladderClimbingSpeed: 0
|
||||||
jumpPower: 0
|
jumpPower: 0
|
||||||
crouchHeight: 0
|
crouchHeight: 0
|
||||||
|
|
@ -486,6 +486,19 @@ MonoBehaviour:
|
||||||
enteredLadderFromTop: 0
|
enteredLadderFromTop: 0
|
||||||
topLadder: {fileID: 0}
|
topLadder: {fileID: 0}
|
||||||
bottomLadder: {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
|
--- !u!1 &351313843
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -3072,7 +3085,6 @@ GameObject:
|
||||||
- component: {fileID: 1551772752}
|
- component: {fileID: 1551772752}
|
||||||
- component: {fileID: 1551772758}
|
- component: {fileID: 1551772758}
|
||||||
- component: {fileID: 1551772756}
|
- component: {fileID: 1551772756}
|
||||||
- component: {fileID: 1551772762}
|
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: Player_Ghost
|
m_Name: Player_Ghost
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
|
|
@ -3171,29 +3183,6 @@ MonoBehaviour:
|
||||||
playerInputReceiver: {fileID: 1551772752}
|
playerInputReceiver: {fileID: 1551772752}
|
||||||
characterHover: {fileID: 275207159}
|
characterHover: {fileID: 275207159}
|
||||||
characterStateChanger: {fileID: 275207161}
|
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
|
--- !u!1 &1591108313
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,9 @@ namespace TTTSC.Player.Character
|
||||||
{
|
{
|
||||||
public class CharacterReffrenceHub : MonoBehaviour
|
public class CharacterReffrenceHub : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
[Header("-----------Misc------------")]
|
||||||
public Rigidbody characterRigidbody;
|
public Rigidbody characterRigidbody;
|
||||||
|
[Header("----------Scripts-----------")]
|
||||||
public PlayerStateEnforcer playerStateEnforcrer;
|
public PlayerStateEnforcer playerStateEnforcrer;
|
||||||
public PlayerStateMachine playerStateMachine;
|
public PlayerStateMachine playerStateMachine;
|
||||||
public Controller.CharacterMovementConfig characterMovementConfig;
|
public Controller.CharacterMovementConfig characterMovementConfig;
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,6 @@ namespace TTTSC.Player.Character.Controller.Alive
|
||||||
private CharacterHover _characterHover;
|
private CharacterHover _characterHover;
|
||||||
private PlayerInputReceiver _playerInputReceiver;
|
private PlayerInputReceiver _playerInputReceiver;
|
||||||
private Rigidbody _characterRigidbody;
|
private Rigidbody _characterRigidbody;
|
||||||
[SerializeField, Tooltip("use Velocity mode for testing interactable objects + other things like pickackable items")]
|
|
||||||
private MoveTypes moveType;
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private ForceModes _hoverForceMode, _moveForceMode;
|
private ForceModes _hoverForceMode, _moveForceMode;
|
||||||
|
|
||||||
|
|
@ -52,12 +50,6 @@ namespace TTTSC.Player.Character.Controller.Alive
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
enum MoveTypes
|
|
||||||
{
|
|
||||||
Velocity,
|
|
||||||
AddForce
|
|
||||||
}
|
|
||||||
|
|
||||||
enum ForceModes
|
enum ForceModes
|
||||||
{
|
{
|
||||||
force,
|
force,
|
||||||
|
|
@ -69,10 +61,6 @@ namespace TTTSC.Player.Character.Controller.Alive
|
||||||
|
|
||||||
private void FixedUpdate()
|
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);
|
Vector3 downVector = transform.TransformDirection(Vector3.down);
|
||||||
|
|
||||||
Drag();
|
Drag();
|
||||||
|
|
@ -80,18 +68,13 @@ namespace TTTSC.Player.Character.Controller.Alive
|
||||||
switch (_characterStateMachine.characterState)
|
switch (_characterStateMachine.characterState)
|
||||||
{
|
{
|
||||||
case CharacterStateMachine.CharacterStates.Grounded:
|
case CharacterStateMachine.CharacterStates.Grounded:
|
||||||
switch (moveType)
|
_characterDrag = 10;
|
||||||
{
|
|
||||||
case MoveTypes.Velocity:
|
Move();
|
||||||
VelocityChangeMover();
|
|
||||||
break;
|
|
||||||
case MoveTypes.AddForce:
|
|
||||||
AddForceMover();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case CharacterStateMachine.CharacterStates.InAir:
|
case CharacterStateMachine.CharacterStates.InAir:
|
||||||
|
_characterDrag = 0;
|
||||||
InAirMove();
|
InAirMove();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
@ -101,38 +84,6 @@ namespace TTTSC.Player.Character.Controller.Alive
|
||||||
_characterRigidbody.AddForce(_characterHover.hoverForces * downVector, ForceMode.VelocityChange);
|
_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()
|
private void Drag()
|
||||||
|
|
@ -145,37 +96,73 @@ namespace TTTSC.Player.Character.Controller.Alive
|
||||||
_characterRigidbody.velocity = newVelocity;
|
_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 (_characterStateMachine.movementStates)
|
||||||
switch (_moveForceMode)
|
|
||||||
{
|
{
|
||||||
case ForceModes.force:
|
case CharacterStateMachine.MovementStates.Walking:
|
||||||
_characterRigidbody.AddForce(movement, ForceMode.Force);
|
Walking();
|
||||||
break;
|
break;
|
||||||
case ForceModes.acceleration:
|
|
||||||
_characterRigidbody.AddForce(movement, ForceMode.Acceleration);
|
case CharacterStateMachine.MovementStates.Crouching:
|
||||||
|
Crouching();
|
||||||
break;
|
break;
|
||||||
case ForceModes.impulse:
|
|
||||||
_characterRigidbody.AddForce(movement.normalized, ForceMode.Impulse);
|
case CharacterStateMachine.MovementStates.Sprinting:
|
||||||
break;
|
Sprinting();
|
||||||
case ForceModes.velocityChange:
|
|
||||||
_characterRigidbody.AddForce(movement.normalized, ForceMode.VelocityChange);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InAirMove()
|
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)
|
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
|
namespace TTTSC.Player.Character.Controller
|
||||||
{
|
{
|
||||||
[RequireComponent(typeof(CharacterStateMachine))]
|
|
||||||
public class PlayerInputReceiver : MonoBehaviour
|
public class PlayerInputReceiver : MonoBehaviour
|
||||||
{
|
{
|
||||||
private float _lookX, _lookY;
|
private float _lookX, _lookY;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue