Added sprinting

dev-hazim
Hazim Bin Ijaz 3 days ago
parent 703f8614d9
commit c8541d23b6

@ -347,7 +347,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4600110157238723790, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
propertyPath: GlobalObjectIdHash
value: 3177087589
value: 3737985212
objectReference: {fileID: 0}
- target: {fileID: 4600110157238723790, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
propertyPath: PrefabHashGenerator
@ -475,6 +475,9 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 4600110157238723781, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
insertIndex: -1
addedObject: {fileID: 4321537148236331373}
- targetCorrespondingSourceObject: {fileID: 4600110157238723781, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
insertIndex: -1
addedObject: {fileID: 4623434621101792862}
m_SourcePrefab: {fileID: 100100000, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}
--- !u!114 &741733315856861890 stripped
MonoBehaviour:
@ -541,6 +544,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 331c67f15523ad7419792662b9768f44, type: 3}
m_Name:
m_EditorClassIdentifier:
staminaManager: {fileID: 4623434621101792862}
m_ServerCharacter: {fileID: 741733315856861890}
m_PhysicsWrapper: {fileID: 6116655102486013040}
m_AbilitySystem: {fileID: 7049454171559621213}
@ -950,6 +954,22 @@ MonoBehaviour:
serverCharacter: {fileID: 741733315856861890}
m_index: 0
playerItem: {fileID: 0}
--- !u!114 &4623434621101792862
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6009713983291384756}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dfa72a58317173e498650d65775537d5, type: 3}
m_Name:
m_EditorClassIdentifier:
maxStamina: 100
sprintStaminaCostPerSecond: 50
staminaRegenRate: 10
staminaRegenDelay: 1
--- !u!4 &6009713983291384766 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4600110157238723791, guid: 0d2d836e2e83b754fa1a1c4022d6d65d, type: 3}

@ -0,0 +1,43 @@
using UnityEngine;
public class StaminaManager : MonoBehaviour
{
[SerializeField] private float maxStamina = 100f;
[SerializeField] private float staminaRegenRate = 10f;
[SerializeField] private float staminaRegenDelay = 1f;
private float currentStamina;
private float staminaRegenTimer;
public float CurrentStamina => currentStamina;
public float MaxStamina => maxStamina;
private void Start()
{
currentStamina = maxStamina;
}
private void Update()
{
if (staminaRegenTimer > 0)
{
staminaRegenTimer -= Time.deltaTime;
}
else if (currentStamina < maxStamina)
{
currentStamina += staminaRegenRate * Time.deltaTime;
currentStamina = Mathf.Min(currentStamina, maxStamina);
}
}
public bool TryConsume(float amount)
{
if (currentStamina >= amount)
{
currentStamina -= amount;
staminaRegenTimer = staminaRegenDelay;
return true;
}
return false;
}
}

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

@ -42,7 +42,8 @@ namespace Unity.BossRoom.Gameplay.UserInput
const float k_MaxNavMeshDistance = 1f;
RaycastHitComparer m_RaycastHitComparer;
[SerializeField] private StaminaManager staminaManager;
private bool isSprinting;
[SerializeField]
ServerCharacter m_ServerCharacter;
@ -141,6 +142,7 @@ namespace Unity.BossRoom.Gameplay.UserInput
{
if (m_InputAllower)
{
HandleSprint();
HandleSwapInput();
HandleAbilityInput();
HandleMovementInput();
@ -524,6 +526,7 @@ namespace Unity.BossRoom.Gameplay.UserInput
private void HandleAbilityInput()
{
if (Input.GetKeyDown(KeyCode.E)) // Dash'N'Crash
{
ActivateAbilityIfAllowed(GameDataSource.Instance.DashNCrashAbilityKey, "Abilities are only for crow");
@ -537,7 +540,48 @@ namespace Unity.BossRoom.Gameplay.UserInput
ActivateAbilityIfAllowed(GameDataSource.Instance.VectorWallAbilityKey);
}
}
private void HandleSprint()
{
if (Input.GetKey(KeyCode.LeftShift))
{
float staminaCost = 50 * Time.deltaTime;
if (staminaManager.TryConsume(staminaCost))
{
if (!isSprinting)
{
StartSprintServerRPC();
}
}
else
{
if (isSprinting)
{
StopSprintServerRPC();
}
}
}
else if (isSprinting)
{
StopSprintServerRPC();
}
}
[ServerRpc]
private void StartSprintServerRPC()
{
isSprinting = true;
m_ServerCharacter.Movement.SetSpeedModifier(2.5f);
}
[ServerRpc]
private void StopSprintServerRPC()
{
isSprinting = false;
m_ServerCharacter.Movement.SetSpeedModifier(1f);
}
private void ActivateAbilityIfAllowed(string abilityKey, string errorMessage = null)
{
if (IsSwapModeActive)

Loading…
Cancel
Save