Basic Recoil

This commit is contained in:
juliuse98
2021-11-07 16:29:21 +01:00
parent 360ceb55f3
commit 352e22225f
6 changed files with 186 additions and 50 deletions

View File

@@ -7,10 +7,11 @@ AnimatorState:
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New State
m_Name: Idle
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: 1172386202742331217}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -20,12 +21,39 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 4781951162920444690, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
m_Motion: {fileID: -3100369314251171874, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-885011302923738855
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Shoot
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 6832378349465690128}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 1
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 4781951162920444690, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
m_Tag:
m_SpeedParameter: ShootSpeed
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@@ -34,7 +62,19 @@ AnimatorController:
m_PrefabAsset: {fileID: 0}
m_Name: M9 Animation Controller
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorParameters:
- m_Name: Shoot
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
- m_Name: ShootSpeed
m_Type: 1
m_DefaultFloat: 1
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 0}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
@@ -48,6 +88,53 @@ AnimatorController:
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &1172386202742331217
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Shoot
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -885011302923738855}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.6
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6832378349465690128
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4965080280457402183}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.1
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1107 &7614406280852874800
AnimatorStateMachine:
serializedVersion: 6
@@ -60,6 +147,9 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: -4965080280457402183}
m_Position: {x: 300, y: 120, z: 0}
- serializedVersion: 1
m_State: {fileID: -885011302923738855}
m_Position: {x: 310, y: 230, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []

View File

@@ -688,6 +688,7 @@ MonoBehaviour:
muzzle: {fileID: 3649358604728444914}
shootAnim: {fileID: 4276885029697240453}
fireRate: 320
gunHoldPos: {fileID: 3682030003239559187}
--- !u!114 &6207632454083444980
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -797,6 +798,10 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
gun: {fileID: 3682030003239559187}
zOffset: 0
returnForce: 0.006
impulsForce: 0.03
maxRecoil: 0.1
--- !u!1 &6272346181657429393
GameObject:
m_ObjectHideFlags: 0
@@ -1076,7 +1081,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
propertyPath: m_LocalRotation.x
value: -0
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
propertyPath: m_LocalRotation.y
@@ -1084,7 +1089,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
propertyPath: m_LocalRotation.z
value: -0
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
propertyPath: m_LocalEulerAnglesHint.x

View File

@@ -102,7 +102,7 @@ public class PlayerController : NetworkBehaviour
if (Input.GetAxisRaw("Sprint") > 0 && isGrounded)
{
Debug.Log("Sprint");
//Debug.Log("Sprint");
movementSpeed = sprintSpeed;
isSprinting = true;
}
@@ -115,11 +115,11 @@ public class PlayerController : NetworkBehaviour
//Grounded
if (velocityY < 0)
{
velocityY += gravity * Time.deltaTime;
velocityY += gravity * 0.9f * Time.deltaTime;
}
else
{
velocityY += gravity * 1.0f * Time.deltaTime;
velocityY += gravity* Time.deltaTime;
}
if (isGrounded && velocityY < 0)
velocityY = 0.0f;

View File

@@ -8,6 +8,7 @@ public class Shoot : NetworkBehaviour
[SerializeField] GameObject muzzle;
[SerializeField] ShootAnimation shootAnim;
[SerializeField] float fireRate;
[SerializeField] GameObject gunHoldPos;
private void Start()
{
@@ -38,6 +39,7 @@ public class Shoot : NetworkBehaviour
shootAnimation();
if (Physics.Raycast(muzzle.transform.position, muzzle.transform.forward, out hit))
{
if (hit.transform.gameObject.GetComponent<Player>() != null)
@@ -53,7 +55,7 @@ public class Shoot : NetworkBehaviour
// This code will be executed on the Client.
void shootAnimation()
{
shootAnim.StartShootAnimation(fireRate);
//shootAnim.StartShootAnimation(fireRate);
shootAnim.recoil(gunHoldPos,0.1f);
}
}

View File

@@ -5,22 +5,61 @@ using UnityEngine;
public class ShootAnimation : MonoBehaviour
{
private Animator anim;
[SerializeField]private GameObject gun;
[SerializeField] private GameObject gun;
private Transform startTransform;
Vector3 startPos;
Vector3 startRot;
[SerializeField] float zOffset = 0f;
[SerializeField] float returnForce = 0.06f;
[SerializeField] float impulsForce = 0.2f;
[SerializeField] float maxRecoil = 0.5f;
private int recoilCounter = 0;
float zVelocity = 0f;
public void OnSwitchWeapon(float fireRate)
{
//gun = newGun;
anim = gun.GetComponent<Animator>();
anim.SetFloat("ShootSpeed",1f/(60f/fireRate));
startPos = gun.transform.localPosition;
startRot = gun.transform.localRotation.eulerAngles;
}
public void StartShootAnimation(float timeInSeconds)
public void recoil(GameObject gun, float force)
{
Debug.Log(anim.GetFloat("ShootSpeed"));
anim.Play("Shoot");
recoilCounter++;
}
// Update is called once per frame
void Update()
void FixedUpdate()
{
//Apply recoil based on the number of shots fired
for (int i = 0; i < recoilCounter; i++)
{
zVelocity -= impulsForce * 0.9f + impulsForce * 0.1f * Mathf.PerlinNoise(i,1f);
}
recoilCounter = 0;
zOffset += zVelocity;
if (zOffset > 0)
{
zOffset = 0f;
zVelocity = 0f;
}
else if (zOffset < 0)
{
zVelocity += returnForce * 0.9f + returnForce * 0.1f * Mathf.PerlinNoise(Time.time,1f);
}
zOffset = Mathf.Clamp(zOffset,-maxRecoil * 0.5f + -maxRecoil * 0.5f * Mathf.PerlinNoise(Time.time * 1000,1),0);
gun.transform.localPosition = startPos + new Vector3(0,0,zOffset);
gun.transform.localRotation = Quaternion.Euler(startRot.x,startRot.y,startRot.z + zOffset * 50f);
}
}