blob: 82a713c84e1f85e23bad73858000779655e94c43 (
plain)
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
|
using UnityEngine;
public class SetInertiaTension : MonoBehaviour
{
private Vector3 defaultInertia;
private Vector3 stableInertia = Vector3.one;
public float collisionValue;
private Rigidbody rig;
private HoldableObject holdable;
private void Start()
{
rig = GetComponent<Rigidbody>();
holdable = GetComponent<HoldableObject>();
defaultInertia = rig.inertiaTensor;
}
private void Update()
{
collisionValue = Mathf.Lerp(collisionValue, 0f, Time.deltaTime * 7f);
rig.inertiaTensor = Vector3.Lerp(stableInertia, defaultInertia, Mathf.Clamp(collisionValue, 0f, 1f));
}
private void OnCollisionEnter(Collision collision)
{
if (!(collision.transform.root == base.transform.root) && !(collision.transform.root == holdable.holder))
{
collisionValue += collision.relativeVelocity.magnitude * 0.4f;
}
}
private void OnCollisionStay(Collision collision)
{
if (!(collision.transform.root == base.transform.root) && !(collision.transform.root == holdable.holder))
{
collisionValue += collision.relativeVelocity.magnitude * 0.2f;
}
}
}
|