diff --git a/FallUnity/Assets/Game/LeafSpawner.cs b/FallUnity/Assets/Game/LeafSpawner.cs index cde82d1..acb5677 100755 --- a/FallUnity/Assets/Game/LeafSpawner.cs +++ b/FallUnity/Assets/Game/LeafSpawner.cs @@ -28,6 +28,7 @@ LeafPhysics leaf = GameObject.Instantiate(Leaf); leaves.Add(leaf); leaf.transform.position = point; + leaf.transform.rotation = Quaternion.Euler(new Vector3((Random.value - 0.5f) * 25, Random.value * 360, (Random.value - 0.5f) * 25)); } } diff --git a/FallUnity/Assets/Game/LeafSpawner.cs b/FallUnity/Assets/Game/LeafSpawner.cs index cde82d1..acb5677 100755 --- a/FallUnity/Assets/Game/LeafSpawner.cs +++ b/FallUnity/Assets/Game/LeafSpawner.cs @@ -28,6 +28,7 @@ LeafPhysics leaf = GameObject.Instantiate(Leaf); leaves.Add(leaf); leaf.transform.position = point; + leaf.transform.rotation = Quaternion.Euler(new Vector3((Random.value - 0.5f) * 25, Random.value * 360, (Random.value - 0.5f) * 25)); } } diff --git a/FallUnity/Assets/Leaves/Leaf.prefab b/FallUnity/Assets/Leaves/Leaf.prefab old mode 100644 new mode 100755 index 539c1d1..e2c9d02 --- a/FallUnity/Assets/Leaves/Leaf.prefab +++ b/FallUnity/Assets/Leaves/Leaf.prefab @@ -239,9 +239,9 @@ m_Material: {fileID: 13400000, guid: 97c74a7f776c04147bded0021cd8dd16, type: 2} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Convex: 1 - m_InflateMesh: 0 + m_CookingOptions: 14 m_SkinWidth: 0.01 m_Mesh: {fileID: 4300000, guid: 815e7170e36908b45a7fb950f1c0fcb7, type: 3} --- !u!114 &114579094665962866 @@ -255,6 +255,9 @@ m_Script: {fileID: 11500000, guid: 5ef0022eccc191d49979a6953de16c79, type: 3} m_Name: m_EditorClassIdentifier: - TorqueForceUpScale: 2.91 - TorqueScale: 0.1 - TorqueBounds: 1.66 + TorqueScale: 0.5 + TorqueBounds: 5 + TorqueSideScale: 0.5 + Debug: 0 + BaseWindForce: 0.4 + AnglePow: 2 diff --git a/FallUnity/Assets/Game/LeafSpawner.cs b/FallUnity/Assets/Game/LeafSpawner.cs index cde82d1..acb5677 100755 --- a/FallUnity/Assets/Game/LeafSpawner.cs +++ b/FallUnity/Assets/Game/LeafSpawner.cs @@ -28,6 +28,7 @@ LeafPhysics leaf = GameObject.Instantiate(Leaf); leaves.Add(leaf); leaf.transform.position = point; + leaf.transform.rotation = Quaternion.Euler(new Vector3((Random.value - 0.5f) * 25, Random.value * 360, (Random.value - 0.5f) * 25)); } } diff --git a/FallUnity/Assets/Leaves/Leaf.prefab b/FallUnity/Assets/Leaves/Leaf.prefab old mode 100644 new mode 100755 index 539c1d1..e2c9d02 --- a/FallUnity/Assets/Leaves/Leaf.prefab +++ b/FallUnity/Assets/Leaves/Leaf.prefab @@ -239,9 +239,9 @@ m_Material: {fileID: 13400000, guid: 97c74a7f776c04147bded0021cd8dd16, type: 2} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Convex: 1 - m_InflateMesh: 0 + m_CookingOptions: 14 m_SkinWidth: 0.01 m_Mesh: {fileID: 4300000, guid: 815e7170e36908b45a7fb950f1c0fcb7, type: 3} --- !u!114 &114579094665962866 @@ -255,6 +255,9 @@ m_Script: {fileID: 11500000, guid: 5ef0022eccc191d49979a6953de16c79, type: 3} m_Name: m_EditorClassIdentifier: - TorqueForceUpScale: 2.91 - TorqueScale: 0.1 - TorqueBounds: 1.66 + TorqueScale: 0.5 + TorqueBounds: 5 + TorqueSideScale: 0.5 + Debug: 0 + BaseWindForce: 0.4 + AnglePow: 2 diff --git a/FallUnity/Assets/Leaves/LeafPhysics.cs b/FallUnity/Assets/Leaves/LeafPhysics.cs old mode 100644 new mode 100755 index 4685480..5d7e7f8 --- a/FallUnity/Assets/Leaves/LeafPhysics.cs +++ b/FallUnity/Assets/Leaves/LeafPhysics.cs @@ -1,4 +1,5 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -7,20 +8,116 @@ // Use this for initialization void Start () { body = GetComponentInChildren(); - } + PlusX = new TweeningForce(0, 1, 0.5f, 2); + MinusX = new TweeningForce(0, 1, 0.5f, 2); + PlusZ = new TweeningForce(0, 1, 0.5f, 2); + MinusZ = new TweeningForce(0, 1, 0.5f, 2); - public float TorqueForceUpScale = 0.3f; + TorqueX = new TweeningForce(-1, 1, 0.5f, 2); + TorqueZ = new TweeningForce(-1, 1, 0.5f, 2); + } + + //public float TorqueForceUpScale = 0.3f; public float TorqueScale = 1.0f; public float TorqueBounds = 5.0f; + public float TorqueSideScale = 1.0f; + + public float SideRestitution = 0.5f; + //public float MaxForceUp = 1.0f; + // + //public float VelDownForceScale = 0.5f; + //public float VelDownForceDivide = 3f; + // + //public float StartPushVelDown = 3.0f; + //public float PushUpCurrent = 0; + //public float PushUpForce = 10; + //public float PushUpDecayRate = 1; + + public bool Debug = false; + + private TweeningForce PlusX; + private TweeningForce MinusX; + private TweeningForce PlusZ; + private TweeningForce MinusZ; + + private TweeningForce TorqueX; + private TweeningForce TorqueZ; + + private class TweeningForce + { + private float min, max, minMoveSpeed, maxMoveSpeed, current, target, speed; + public float Current { get { return current; } } + + public TweeningForce(float min, float max, float minMoveSpeed, float maxMoveSpeed) + { + this.min = min; + this.max = max; + this.minMoveSpeed = minMoveSpeed; + this.maxMoveSpeed = maxMoveSpeed; + this.current = UnityEngine.Random.Range(min, max); + UpdateTarget(); + } + + private void UpdateTarget() + { + this.target = UnityEngine.Random.Range(min, max); + this.speed = UnityEngine.Random.Range(minMoveSpeed, maxMoveSpeed); + } + + public void Update(float timeElapsed) + { + float moveAmount = speed * timeElapsed; + if (moveAmount >= Math.Abs(current - target)) + { + current = target; + UpdateTarget(); + } + else + { + float move = Math.Max(-moveAmount, Math.Min(moveAmount, target - current)); + current += move; + } + } + } + + public float BaseWindForce = 10; + public float AnglePow = 2; // Update is called once per frame void Update () { + + if (Debug) + { + bool bp = true; + } + float baseForceUp = Mathf.Max(BaseWindForce * Mathf.Pow(Mathf.Abs(transform.up.y), AnglePow) * -body.velocity.y); + + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + PlusX.Current), transform.position + Vector3.right * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + MinusX.Current), transform.position - Vector3.right * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + PlusZ.Current), transform.position + Vector3.forward * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + MinusZ.Current), transform.position - Vector3.forward * 0.4f); + + /* + if (body.velocity.y < -StartPushVelDown) + { + PushUpCurrent = PushUpForce; + } + + body.AddForce(Vector3.up * PushUpCurrent); + + PushUpCurrent = Mathf.Max(0, PushUpCurrent - PushUpDecayRate * Time.deltaTime); + */ float torqueX = -transform.up.x; float torqueZ = -transform.up.z; - float forceUp = Mathf.Abs(torqueX) * TorqueForceUpScale + Mathf.Abs(torqueZ) * TorqueForceUpScale; - body.AddRelativeForce(Vector3.up * forceUp); - body.AddRelativeTorque(new Vector3(Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueX * TorqueScale)), 0, Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueZ * TorqueScale)))); - } -} + + float velYScale = Math.Max(0, -body.velocity.y); + + body.AddRelativeForce(new Vector3(torqueX * TorqueSideScale, 0, torqueZ * TorqueSideScale) * velYScale); + //body.AddForce(Vector3.up * Mathf.Pow(Mathf.Max(-body.velocity.y / VelDownForceDivide), 2) * VelDownForceScale); + body.AddRelativeTorque(new Vector3(Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueX * TorqueScale * 1.2f)) + TorqueX.Current * 0.5f, 0, Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueZ * TorqueScale)) + TorqueZ.Current * 0.5f) * velYScale); + + body.AddForce(new Vector3(-body.velocity.x, 0, -body.velocity.z) * SideRestitution); + } +} \ No newline at end of file diff --git a/FallUnity/Assets/Game/LeafSpawner.cs b/FallUnity/Assets/Game/LeafSpawner.cs index cde82d1..acb5677 100755 --- a/FallUnity/Assets/Game/LeafSpawner.cs +++ b/FallUnity/Assets/Game/LeafSpawner.cs @@ -28,6 +28,7 @@ LeafPhysics leaf = GameObject.Instantiate(Leaf); leaves.Add(leaf); leaf.transform.position = point; + leaf.transform.rotation = Quaternion.Euler(new Vector3((Random.value - 0.5f) * 25, Random.value * 360, (Random.value - 0.5f) * 25)); } } diff --git a/FallUnity/Assets/Leaves/Leaf.prefab b/FallUnity/Assets/Leaves/Leaf.prefab old mode 100644 new mode 100755 index 539c1d1..e2c9d02 --- a/FallUnity/Assets/Leaves/Leaf.prefab +++ b/FallUnity/Assets/Leaves/Leaf.prefab @@ -239,9 +239,9 @@ m_Material: {fileID: 13400000, guid: 97c74a7f776c04147bded0021cd8dd16, type: 2} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Convex: 1 - m_InflateMesh: 0 + m_CookingOptions: 14 m_SkinWidth: 0.01 m_Mesh: {fileID: 4300000, guid: 815e7170e36908b45a7fb950f1c0fcb7, type: 3} --- !u!114 &114579094665962866 @@ -255,6 +255,9 @@ m_Script: {fileID: 11500000, guid: 5ef0022eccc191d49979a6953de16c79, type: 3} m_Name: m_EditorClassIdentifier: - TorqueForceUpScale: 2.91 - TorqueScale: 0.1 - TorqueBounds: 1.66 + TorqueScale: 0.5 + TorqueBounds: 5 + TorqueSideScale: 0.5 + Debug: 0 + BaseWindForce: 0.4 + AnglePow: 2 diff --git a/FallUnity/Assets/Leaves/LeafPhysics.cs b/FallUnity/Assets/Leaves/LeafPhysics.cs old mode 100644 new mode 100755 index 4685480..5d7e7f8 --- a/FallUnity/Assets/Leaves/LeafPhysics.cs +++ b/FallUnity/Assets/Leaves/LeafPhysics.cs @@ -1,4 +1,5 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -7,20 +8,116 @@ // Use this for initialization void Start () { body = GetComponentInChildren(); - } + PlusX = new TweeningForce(0, 1, 0.5f, 2); + MinusX = new TweeningForce(0, 1, 0.5f, 2); + PlusZ = new TweeningForce(0, 1, 0.5f, 2); + MinusZ = new TweeningForce(0, 1, 0.5f, 2); - public float TorqueForceUpScale = 0.3f; + TorqueX = new TweeningForce(-1, 1, 0.5f, 2); + TorqueZ = new TweeningForce(-1, 1, 0.5f, 2); + } + + //public float TorqueForceUpScale = 0.3f; public float TorqueScale = 1.0f; public float TorqueBounds = 5.0f; + public float TorqueSideScale = 1.0f; + + public float SideRestitution = 0.5f; + //public float MaxForceUp = 1.0f; + // + //public float VelDownForceScale = 0.5f; + //public float VelDownForceDivide = 3f; + // + //public float StartPushVelDown = 3.0f; + //public float PushUpCurrent = 0; + //public float PushUpForce = 10; + //public float PushUpDecayRate = 1; + + public bool Debug = false; + + private TweeningForce PlusX; + private TweeningForce MinusX; + private TweeningForce PlusZ; + private TweeningForce MinusZ; + + private TweeningForce TorqueX; + private TweeningForce TorqueZ; + + private class TweeningForce + { + private float min, max, minMoveSpeed, maxMoveSpeed, current, target, speed; + public float Current { get { return current; } } + + public TweeningForce(float min, float max, float minMoveSpeed, float maxMoveSpeed) + { + this.min = min; + this.max = max; + this.minMoveSpeed = minMoveSpeed; + this.maxMoveSpeed = maxMoveSpeed; + this.current = UnityEngine.Random.Range(min, max); + UpdateTarget(); + } + + private void UpdateTarget() + { + this.target = UnityEngine.Random.Range(min, max); + this.speed = UnityEngine.Random.Range(minMoveSpeed, maxMoveSpeed); + } + + public void Update(float timeElapsed) + { + float moveAmount = speed * timeElapsed; + if (moveAmount >= Math.Abs(current - target)) + { + current = target; + UpdateTarget(); + } + else + { + float move = Math.Max(-moveAmount, Math.Min(moveAmount, target - current)); + current += move; + } + } + } + + public float BaseWindForce = 10; + public float AnglePow = 2; // Update is called once per frame void Update () { + + if (Debug) + { + bool bp = true; + } + float baseForceUp = Mathf.Max(BaseWindForce * Mathf.Pow(Mathf.Abs(transform.up.y), AnglePow) * -body.velocity.y); + + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + PlusX.Current), transform.position + Vector3.right * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + MinusX.Current), transform.position - Vector3.right * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + PlusZ.Current), transform.position + Vector3.forward * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + MinusZ.Current), transform.position - Vector3.forward * 0.4f); + + /* + if (body.velocity.y < -StartPushVelDown) + { + PushUpCurrent = PushUpForce; + } + + body.AddForce(Vector3.up * PushUpCurrent); + + PushUpCurrent = Mathf.Max(0, PushUpCurrent - PushUpDecayRate * Time.deltaTime); + */ float torqueX = -transform.up.x; float torqueZ = -transform.up.z; - float forceUp = Mathf.Abs(torqueX) * TorqueForceUpScale + Mathf.Abs(torqueZ) * TorqueForceUpScale; - body.AddRelativeForce(Vector3.up * forceUp); - body.AddRelativeTorque(new Vector3(Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueX * TorqueScale)), 0, Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueZ * TorqueScale)))); - } -} + + float velYScale = Math.Max(0, -body.velocity.y); + + body.AddRelativeForce(new Vector3(torqueX * TorqueSideScale, 0, torqueZ * TorqueSideScale) * velYScale); + //body.AddForce(Vector3.up * Mathf.Pow(Mathf.Max(-body.velocity.y / VelDownForceDivide), 2) * VelDownForceScale); + body.AddRelativeTorque(new Vector3(Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueX * TorqueScale * 1.2f)) + TorqueX.Current * 0.5f, 0, Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueZ * TorqueScale)) + TorqueZ.Current * 0.5f) * velYScale); + + body.AddForce(new Vector3(-body.velocity.x, 0, -body.velocity.z) * SideRestitution); + } +} \ No newline at end of file diff --git a/FallUnity/Assets/level.unity b/FallUnity/Assets/level.unity index 067020c..debc777 100755 --- a/FallUnity/Assets/level.unity +++ b/FallUnity/Assets/level.unity @@ -589,7 +589,7 @@ m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1206131915} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.42, y: 7.71, z: -0.41} + m_LocalPosition: {x: -0.42, y: 11.6, z: -0.41} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} diff --git a/FallUnity/Assets/Game/LeafSpawner.cs b/FallUnity/Assets/Game/LeafSpawner.cs index cde82d1..acb5677 100755 --- a/FallUnity/Assets/Game/LeafSpawner.cs +++ b/FallUnity/Assets/Game/LeafSpawner.cs @@ -28,6 +28,7 @@ LeafPhysics leaf = GameObject.Instantiate(Leaf); leaves.Add(leaf); leaf.transform.position = point; + leaf.transform.rotation = Quaternion.Euler(new Vector3((Random.value - 0.5f) * 25, Random.value * 360, (Random.value - 0.5f) * 25)); } } diff --git a/FallUnity/Assets/Leaves/Leaf.prefab b/FallUnity/Assets/Leaves/Leaf.prefab old mode 100644 new mode 100755 index 539c1d1..e2c9d02 --- a/FallUnity/Assets/Leaves/Leaf.prefab +++ b/FallUnity/Assets/Leaves/Leaf.prefab @@ -239,9 +239,9 @@ m_Material: {fileID: 13400000, guid: 97c74a7f776c04147bded0021cd8dd16, type: 2} m_IsTrigger: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Convex: 1 - m_InflateMesh: 0 + m_CookingOptions: 14 m_SkinWidth: 0.01 m_Mesh: {fileID: 4300000, guid: 815e7170e36908b45a7fb950f1c0fcb7, type: 3} --- !u!114 &114579094665962866 @@ -255,6 +255,9 @@ m_Script: {fileID: 11500000, guid: 5ef0022eccc191d49979a6953de16c79, type: 3} m_Name: m_EditorClassIdentifier: - TorqueForceUpScale: 2.91 - TorqueScale: 0.1 - TorqueBounds: 1.66 + TorqueScale: 0.5 + TorqueBounds: 5 + TorqueSideScale: 0.5 + Debug: 0 + BaseWindForce: 0.4 + AnglePow: 2 diff --git a/FallUnity/Assets/Leaves/LeafPhysics.cs b/FallUnity/Assets/Leaves/LeafPhysics.cs old mode 100644 new mode 100755 index 4685480..5d7e7f8 --- a/FallUnity/Assets/Leaves/LeafPhysics.cs +++ b/FallUnity/Assets/Leaves/LeafPhysics.cs @@ -1,4 +1,5 @@ -using System.Collections; +using System; +using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -7,20 +8,116 @@ // Use this for initialization void Start () { body = GetComponentInChildren(); - } + PlusX = new TweeningForce(0, 1, 0.5f, 2); + MinusX = new TweeningForce(0, 1, 0.5f, 2); + PlusZ = new TweeningForce(0, 1, 0.5f, 2); + MinusZ = new TweeningForce(0, 1, 0.5f, 2); - public float TorqueForceUpScale = 0.3f; + TorqueX = new TweeningForce(-1, 1, 0.5f, 2); + TorqueZ = new TweeningForce(-1, 1, 0.5f, 2); + } + + //public float TorqueForceUpScale = 0.3f; public float TorqueScale = 1.0f; public float TorqueBounds = 5.0f; + public float TorqueSideScale = 1.0f; + + public float SideRestitution = 0.5f; + //public float MaxForceUp = 1.0f; + // + //public float VelDownForceScale = 0.5f; + //public float VelDownForceDivide = 3f; + // + //public float StartPushVelDown = 3.0f; + //public float PushUpCurrent = 0; + //public float PushUpForce = 10; + //public float PushUpDecayRate = 1; + + public bool Debug = false; + + private TweeningForce PlusX; + private TweeningForce MinusX; + private TweeningForce PlusZ; + private TweeningForce MinusZ; + + private TweeningForce TorqueX; + private TweeningForce TorqueZ; + + private class TweeningForce + { + private float min, max, minMoveSpeed, maxMoveSpeed, current, target, speed; + public float Current { get { return current; } } + + public TweeningForce(float min, float max, float minMoveSpeed, float maxMoveSpeed) + { + this.min = min; + this.max = max; + this.minMoveSpeed = minMoveSpeed; + this.maxMoveSpeed = maxMoveSpeed; + this.current = UnityEngine.Random.Range(min, max); + UpdateTarget(); + } + + private void UpdateTarget() + { + this.target = UnityEngine.Random.Range(min, max); + this.speed = UnityEngine.Random.Range(minMoveSpeed, maxMoveSpeed); + } + + public void Update(float timeElapsed) + { + float moveAmount = speed * timeElapsed; + if (moveAmount >= Math.Abs(current - target)) + { + current = target; + UpdateTarget(); + } + else + { + float move = Math.Max(-moveAmount, Math.Min(moveAmount, target - current)); + current += move; + } + } + } + + public float BaseWindForce = 10; + public float AnglePow = 2; // Update is called once per frame void Update () { + + if (Debug) + { + bool bp = true; + } + float baseForceUp = Mathf.Max(BaseWindForce * Mathf.Pow(Mathf.Abs(transform.up.y), AnglePow) * -body.velocity.y); + + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + PlusX.Current), transform.position + Vector3.right * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + MinusX.Current), transform.position - Vector3.right * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + PlusZ.Current), transform.position + Vector3.forward * 0.4f); + body.AddForceAtPosition(Vector3.up * baseForceUp * (1 + MinusZ.Current), transform.position - Vector3.forward * 0.4f); + + /* + if (body.velocity.y < -StartPushVelDown) + { + PushUpCurrent = PushUpForce; + } + + body.AddForce(Vector3.up * PushUpCurrent); + + PushUpCurrent = Mathf.Max(0, PushUpCurrent - PushUpDecayRate * Time.deltaTime); + */ float torqueX = -transform.up.x; float torqueZ = -transform.up.z; - float forceUp = Mathf.Abs(torqueX) * TorqueForceUpScale + Mathf.Abs(torqueZ) * TorqueForceUpScale; - body.AddRelativeForce(Vector3.up * forceUp); - body.AddRelativeTorque(new Vector3(Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueX * TorqueScale)), 0, Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueZ * TorqueScale)))); - } -} + + float velYScale = Math.Max(0, -body.velocity.y); + + body.AddRelativeForce(new Vector3(torqueX * TorqueSideScale, 0, torqueZ * TorqueSideScale) * velYScale); + //body.AddForce(Vector3.up * Mathf.Pow(Mathf.Max(-body.velocity.y / VelDownForceDivide), 2) * VelDownForceScale); + body.AddRelativeTorque(new Vector3(Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueX * TorqueScale * 1.2f)) + TorqueX.Current * 0.5f, 0, Mathf.Max(-TorqueBounds, Mathf.Min(TorqueBounds, torqueZ * TorqueScale)) + TorqueZ.Current * 0.5f) * velYScale); + + body.AddForce(new Vector3(-body.velocity.x, 0, -body.velocity.z) * SideRestitution); + } +} \ No newline at end of file diff --git a/FallUnity/Assets/level.unity b/FallUnity/Assets/level.unity index 067020c..debc777 100755 --- a/FallUnity/Assets/level.unity +++ b/FallUnity/Assets/level.unity @@ -589,7 +589,7 @@ m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1206131915} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.42, y: 7.71, z: -0.41} + m_LocalPosition: {x: -0.42, y: 11.6, z: -0.41} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} diff --git a/FallUnity/ProjectSettings/DynamicsManager.asset b/FallUnity/ProjectSettings/DynamicsManager.asset old mode 100644 new mode 100755 index fcc0b24..219523f --- a/FallUnity/ProjectSettings/DynamicsManager.asset +++ b/FallUnity/ProjectSettings/DynamicsManager.asset @@ -3,8 +3,8 @@ --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 - serializedVersion: 3 - m_Gravity: {x: 0, y: -1.33, z: 0} + serializedVersion: 7 + m_Gravity: {x: 0, y: -2.55, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 m_SleepThreshold: 0.005 @@ -14,7 +14,16 @@ m_QueriesHitBackfaces: 0 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 - m_EnablePCM: 1 + m_ClothInterCollisionDistance: 0 + m_ClothInterCollisionStiffness: 0 + m_ContactsGeneration: 1 m_LayerCollisionMatrix: fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff m_AutoSimulation: 1 m_AutoSyncTransforms: 1 + m_ClothInterCollisionSettingsToggle: 0 + m_ContactPairsMode: 0 + m_BroadphaseType: 0 + m_WorldBounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 250, y: 250, z: 250} + m_WorldSubdivisions: 8