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_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_Name: New State m_Name: Idle
m_Speed: 1 m_Speed: 1
m_CycleOffset: 0 m_CycleOffset: 0
m_Transitions: [] m_Transitions:
- {fileID: 1172386202742331217}
m_StateMachineBehaviours: [] m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0} m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0 m_IKOnFeet: 0
@@ -20,12 +21,39 @@ AnimatorState:
m_MirrorParameterActive: 0 m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0 m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0 m_TimeParameterActive: 0
m_Motion: {fileID: 4781951162920444690, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3} m_Motion: {fileID: -3100369314251171874, guid: d1ac7df45c0d7e84993ff57afe3c4d6f, type: 3}
m_Tag: m_Tag:
m_SpeedParameter: m_SpeedParameter:
m_MirrorParameter: m_MirrorParameter:
m_CycleOffsetParameter: m_CycleOffsetParameter:
m_TimeParameter: 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 --- !u!91 &9100000
AnimatorController: AnimatorController:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -34,7 +62,19 @@ AnimatorController:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_Name: M9 Animation Controller m_Name: M9 Animation Controller
serializedVersion: 5 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: m_AnimatorLayers:
- serializedVersion: 5 - serializedVersion: 5
m_Name: Base Layer m_Name: Base Layer
@@ -48,6 +88,53 @@ AnimatorController:
m_IKPass: 0 m_IKPass: 0
m_SyncedLayerAffectsTiming: 0 m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000} 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 --- !u!1107 &7614406280852874800
AnimatorStateMachine: AnimatorStateMachine:
serializedVersion: 6 serializedVersion: 6
@@ -60,6 +147,9 @@ AnimatorStateMachine:
- serializedVersion: 1 - serializedVersion: 1
m_State: {fileID: -4965080280457402183} m_State: {fileID: -4965080280457402183}
m_Position: {x: 300, y: 120, z: 0} 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_ChildStateMachines: []
m_AnyStateTransitions: [] m_AnyStateTransitions: []
m_EntryTransitions: [] m_EntryTransitions: []

View File

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

View File

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

View File

@@ -8,6 +8,7 @@ public class Shoot : NetworkBehaviour
[SerializeField] GameObject muzzle; [SerializeField] GameObject muzzle;
[SerializeField] ShootAnimation shootAnim; [SerializeField] ShootAnimation shootAnim;
[SerializeField] float fireRate; [SerializeField] float fireRate;
[SerializeField] GameObject gunHoldPos;
private void Start() private void Start()
{ {
@@ -38,6 +39,7 @@ public class Shoot : NetworkBehaviour
shootAnimation(); shootAnimation();
if (Physics.Raycast(muzzle.transform.position, muzzle.transform.forward, out hit)) if (Physics.Raycast(muzzle.transform.position, muzzle.transform.forward, out hit))
{ {
if (hit.transform.gameObject.GetComponent<Player>() != null) if (hit.transform.gameObject.GetComponent<Player>() != null)
@@ -53,7 +55,7 @@ public class Shoot : NetworkBehaviour
// This code will be executed on the Client. // This code will be executed on the Client.
void shootAnimation() 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 public class ShootAnimation : MonoBehaviour
{ {
private Animator anim; 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) public void OnSwitchWeapon(float fireRate)
{ {
//gun = newGun; //gun = newGun;
anim = gun.GetComponent<Animator>(); anim = gun.GetComponent<Animator>();
anim.SetFloat("ShootSpeed",1f/(60f/fireRate)); 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"); 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);
} }
} }

View File

@@ -97,7 +97,7 @@ MonoBehaviour:
y: 21 y: 21
width: 330.8 width: 330.8
height: 428.4 height: 428.4
m_Scale: {x: 1.1592737, y: 1.1592739} m_Scale: {x: 1, y: 1}
m_Translation: {x: 165.4, y: 214.2} m_Translation: {x: 165.4, y: 214.2}
m_MarginLeft: 0 m_MarginLeft: 0
m_MarginRight: 0 m_MarginRight: 0
@@ -105,10 +105,10 @@ MonoBehaviour:
m_MarginBottom: 0 m_MarginBottom: 0
m_LastShownAreaInsideMargins: m_LastShownAreaInsideMargins:
serializedVersion: 2 serializedVersion: 2
x: -142.67552 x: -165.4
y: -184.77083 y: -214.2
width: 285.35104 width: 330.8
height: 369.54166 height: 428.4
m_MinimalGUI: 1 m_MinimalGUI: 1
m_defaultScale: 1 m_defaultScale: 1
m_LastWindowPixelSize: {x: 413.5, y: 561.75} m_LastWindowPixelSize: {x: 413.5, y: 561.75}
@@ -227,7 +227,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: 660bffff7a0bffff800bffffac0bffff540fffff680fffff6e0fffff9a0fffffd842ffffec42fffff242ffff1e43ffff4c58ffff6058ffff6658ffff9258ffff6876ffff7c76ffff8276ffffae76ffff8cceffff96ceffff9aceffffc6ceffff7ef2ffff84f2ffffe0f3ffffe4f3ffffeef3fffff2f3ffff1ef4ffffdcfaffffeafaffffeefaffff1afbffff2afbffff m_ExpandedIDs: 141dfcff421dfcfff21dfcff0678fcff1a78fcff2078fcff4e78fcfffe78fcff0082fcff0682fcff3482fcffe482fcffd4c2fcffdac2fcff08c3fcffb8c3fcff0050fdff2e50fdffde50fdff96ddfdff9cddfdffcaddfdff7adefdff92e3fdff98e3fdffc6e3fdff76e4fdffda01feffe001feff0e02feffbe02feff7a0dfeff800dfeffae0dfeff5e0efeffae18feffb418feffe218feff9219feffa22dfefff23ffeff0640feff0c40feff3a40feffea40feffb8a4feffbea4feffeca4feff9ca5feff660bffff7a0bffff800bffffac0bffff540fffff680fffff6e0fffff9a0fffffd842ffffec42fffff242ffff1e43ffff4c58ffff6058ffff6658ffff9258ffff6876ffff7c76ffff8276ffffae76ffff8cceffff96ceffff9aceffffc6ceffff7ef2ffff84f2ffffe0f3ffffe4f3ffffeef3fffff2f3ffff1ef4ffffdcfaffffeafaffffeefaffff1afbffff2afbffff
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@@ -298,10 +298,10 @@ MonoBehaviour:
m_Tooltip: m_Tooltip:
m_Pos: m_Pos:
serializedVersion: 2 serializedVersion: 2
x: 297.6 x: 492
y: 73.6 y: 73.6
width: 207.6 width: 345.2
height: 450 height: 449.4
m_ViewDataDictionary: {fileID: 0} m_ViewDataDictionary: {fileID: 0}
m_OverlayCanvas: m_OverlayCanvas:
m_LastAppliedPresetName: Default m_LastAppliedPresetName: Default
@@ -310,14 +310,14 @@ MonoBehaviour:
m_KeySerializationHelper: m_KeySerializationHelper:
- {fileID: 7614406280852874800, guid: daf332133edb41440a3abb1cf6e24558, type: 2} - {fileID: 7614406280852874800, guid: daf332133edb41440a3abb1cf6e24558, type: 2}
m_ValueSerializationHelper: m_ValueSerializationHelper:
- e00: 0.93576187 - e00: 0.46289816
e01: 0 e01: 0
e02: 0 e02: 0
e03: -345.5047 e03: -98.212
e10: 0 e10: 0
e11: 0.93576187 e11: 0.46289816
e12: 0 e12: 0
e13: 81.44865 e13: 88.08187
e20: 0 e20: 0
e21: 0 e21: 0
e22: 1 e22: 1
@@ -339,7 +339,7 @@ MonoBehaviour:
m_MiniTool: 0 m_MiniTool: 0
m_LockTracker: m_LockTracker:
m_IsLocked: 0 m_IsLocked: 0
m_CurrentEditor: 0 m_CurrentEditor: 1
m_LayerEditor: m_LayerEditor:
m_SelectedLayerIndex: 0 m_SelectedLayerIndex: 0
--- !u!114 &9 --- !u!114 &9
@@ -578,9 +578,9 @@ MonoBehaviour:
m_PlayAudio: 0 m_PlayAudio: 0
m_AudioPlay: 0 m_AudioPlay: 0
m_Position: m_Position:
m_Target: {x: 0.5076783, y: 3.9909852, z: 0.061484996} m_Target: {x: 0.49072248, y: 7.6249065, z: 1.8747175}
speed: 2 speed: 2
m_Value: {x: 0.5076783, y: 3.9909852, z: 0.061484996} m_Value: {x: 0.49072248, y: 7.6249065, z: 1.8747175}
m_RenderMode: 0 m_RenderMode: 0
m_CameraMode: m_CameraMode:
drawMode: 0 drawMode: 0
@@ -627,13 +627,13 @@ MonoBehaviour:
m_GridAxis: 1 m_GridAxis: 1
m_gridOpacity: 0.5 m_gridOpacity: 0.5
m_Rotation: m_Rotation:
m_Target: {x: -0.013870413, y: 0.90260464, z: 0.029275607, w: 0.42936158} m_Target: {x: 0.02317691, y: 0.96904457, z: -0.09976932, w: 0.22486019}
speed: 2 speed: 2
m_Value: {x: -0.013869748, y: 0.90256137, z: 0.029274205, w: 0.42934102} m_Value: {x: 0.023026071, y: 0.96933204, z: -0.09979895, w: 0.22339514}
m_Size: m_Size:
m_Target: 0.22076394 m_Target: 1.7877662
speed: 2 speed: 2
m_Value: 0.22076394 m_Value: 1.7107811
m_Ortho: m_Ortho:
m_Target: 1 m_Target: 1
speed: 2 speed: 2
@@ -694,7 +694,7 @@ MonoBehaviour:
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 1 m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ConsoleWindow m_Name: ProjectBrowser
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Children: [] m_Children: []
m_Position: m_Position:
@@ -703,14 +703,14 @@ MonoBehaviour:
y: 470.4 y: 470.4
width: 1172 width: 1172
height: 260.4 height: 260.4
m_MinSize: {x: 101, y: 121} m_MinSize: {x: 231, y: 271}
m_MaxSize: {x: 4001, y: 4021} m_MaxSize: {x: 10001, y: 10021}
m_ActualView: {fileID: 13} m_ActualView: {fileID: 12}
m_Panes: m_Panes:
- {fileID: 12} - {fileID: 12}
- {fileID: 13} - {fileID: 13}
m_Selected: 1 m_Selected: 0
m_LastSelected: 0 m_LastSelected: 1
--- !u!114 &12 --- !u!114 &12
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 52 m_ObjectHideFlags: 52
@@ -764,10 +764,10 @@ MonoBehaviour:
m_LockTracker: m_LockTracker:
m_IsLocked: 0 m_IsLocked: 0
m_FolderTreeState: m_FolderTreeState:
scrollPos: {x: 0, y: 185} scrollPos: {x: 0, y: 179}
m_SelectedIDs: 6a670000 m_SelectedIDs: 6a670000
m_LastClickedID: 26474 m_LastClickedID: 26474
m_ExpandedIDs: 000000004e62000050620000606200006262000066620000b8620000f462000000ca9a3bffffff7f m_ExpandedIDs: 000000004e62000050620000606200006262000000ca9a3bffffff7f
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@@ -795,7 +795,7 @@ MonoBehaviour:
scrollPos: {x: 0, y: 0} scrollPos: {x: 0, y: 0}
m_SelectedIDs: m_SelectedIDs:
m_LastClickedID: 0 m_LastClickedID: 0
m_ExpandedIDs: 000000004e62000050620000 m_ExpandedIDs: 000000004e620000506200006062000000ca9a3bffffff7f
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@@ -822,8 +822,8 @@ MonoBehaviour:
m_ListAreaState: m_ListAreaState:
m_SelectedInstanceIDs: m_SelectedInstanceIDs:
m_LastClickedInstanceID: 0 m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 1 m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs: c623000030660000986f0000d65e0000 m_ExpandedInstanceIDs: c623000030660000986f0000d65e0000825f0000
m_RenameOverlay: m_RenameOverlay:
m_UserAcceptedRename: 0 m_UserAcceptedRename: 0
m_Name: m_Name:
@@ -898,8 +898,8 @@ MonoBehaviour:
y: 0 y: 0
width: 364 width: 364
height: 730.8 height: 730.8
m_MinSize: {x: 275, y: 50} m_MinSize: {x: 276, y: 71}
m_MaxSize: {x: 4000, y: 4000} m_MaxSize: {x: 4001, y: 4021}
m_ActualView: {fileID: 15} m_ActualView: {fileID: 15}
m_Panes: m_Panes:
- {fileID: 15} - {fileID: 15}