1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
using UnityEngine;
public class Recoil : MonoBehaviour
{
public float ADSMovementMultiplier = 0.5f;
[Header("")]
public Vector3 gunForce;
public Vector3 gunForceRandom;
[Header("")]
public Vector3 gunTorque;
public Vector3 gunTorqueRandom;
[Header("")]
private Rigidbody rig;
[Header("")]
public Vector2 recoil;
public Vector2 randomRecoil;
public AnimationCurve recoilCurve;
private CameraRecoil cameraRecoil;
private HoldableObject holdableObject;
private ADS ads;
private void Start()
{
rig = GetComponent<Rigidbody>();
holdableObject = GetComponent<HoldableObject>();
ads = GetComponentInChildren<ADS>();
}
private void Update()
{
if (!holdableObject.isHeld && (bool)cameraRecoil)
{
cameraRecoil = null;
}
}
public void AddRecoil(bool ADS)
{
if (!cameraRecoil)
{
cameraRecoil = holdableObject.holder.GetComponentInChildren<CameraRecoil>();
}
ads.PlayRecoilAnimation();
cameraRecoil.AddRecoil(recoil + new Vector2(Random.Range(0f - randomRecoil.x, randomRecoil.x), Random.Range(0f - randomRecoil.y, randomRecoil.y)), recoilCurve);
float num = 1f;
if (ADS)
{
num = ADSMovementMultiplier;
}
rig.AddForce(base.transform.TransformDirection(gunForce + new Vector3(Random.Range(0f - gunForceRandom.x, gunForceRandom.x), Random.Range(0f - gunForceRandom.y, gunForceRandom.y), Random.Range(0f - gunForceRandom.z, gunForceRandom.z))) * num, ForceMode.VelocityChange);
rig.AddTorque(base.transform.TransformDirection(gunTorque + new Vector3(Random.Range(0f - gunTorqueRandom.x, gunTorqueRandom.x), Random.Range(0f - gunTorqueRandom.y, gunTorqueRandom.y), Random.Range(0f - gunTorqueRandom.z, gunTorqueRandom.z))) * num, ForceMode.VelocityChange);
}
}
|