From 48ab4a903783ce6ecb102d2b9e1278716728bf82 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 27 Jan 2022 20:14:23 +0800 Subject: *misc --- JamTools/Assets/JamTools/Prefabs/Player.prefab | 18 ++++++- .../JamTools/Scenes/FPSCharacterController.unity | 36 ++++--------- .../FPSCharacterController.cs | 4 -- .../Character/FPSCharacterController/PlayerBody.cs | 14 +++++ .../FPSCharacterController/WallChecker.cs | 40 ++++----------- JamTools/Assets/JamTools/Scripts/TestCollision.cs | 51 +++++++++++++++++++ .../Assets/JamTools/Scripts/TestCollision.cs.meta | 11 ++++ .../JamTools/Scripts/Utils/ColliderUtility.cs | 59 ++++++++++++++++++++++ .../JamTools/Scripts/Utils/ColliderUtility.cs.meta | 11 ++++ 9 files changed, 184 insertions(+), 60 deletions(-) create mode 100644 JamTools/Assets/JamTools/Scripts/TestCollision.cs create mode 100644 JamTools/Assets/JamTools/Scripts/TestCollision.cs.meta create mode 100644 JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs create mode 100644 JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs.meta diff --git a/JamTools/Assets/JamTools/Prefabs/Player.prefab b/JamTools/Assets/JamTools/Prefabs/Player.prefab index 96fc7c7..599f41b 100644 --- a/JamTools/Assets/JamTools/Prefabs/Player.prefab +++ b/JamTools/Assets/JamTools/Prefabs/Player.prefab @@ -294,6 +294,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_Modules: -1 m_Eye: {fileID: 3755607823435741754} + m_Body: {fileID: 0} m_GroundChecker: {fileID: 3755607822235943203} m_WallChecker: {fileID: 553569468365550078} m_LookSensitive: 1000 @@ -378,7 +379,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 1f41374a6d8c5c14388e0da7ceb2fe37, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -443,6 +444,7 @@ GameObject: - component: {fileID: 3755607823625089713} - component: {fileID: 3755607823625089712} - component: {fileID: 3755607823625089715} + - component: {fileID: 108258044} m_Layer: 6 m_Name: Body m_TagString: Untagged @@ -527,6 +529,18 @@ CapsuleCollider: m_Height: 2 m_Direction: 1 m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &108258044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3755607823625089725} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2c8f58020a68c9a4cad47eca148231ff, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &4374959424473659971 GameObject: m_ObjectHideFlags: 0 @@ -579,7 +593,7 @@ MeshCollider: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4374959424473659971} m_Material: {fileID: 0} - m_IsTrigger: 1 + m_IsTrigger: 0 m_Enabled: 1 serializedVersion: 4 m_Convex: 1 diff --git a/JamTools/Assets/JamTools/Scenes/FPSCharacterController.unity b/JamTools/Assets/JamTools/Scenes/FPSCharacterController.unity index 3fe0725..57c7423 100644 --- a/JamTools/Assets/JamTools/Scenes/FPSCharacterController.unity +++ b/JamTools/Assets/JamTools/Scenes/FPSCharacterController.unity @@ -907,18 +907,12 @@ Mesh: offset: 0 size: 0 path: ---- !u!1 &108258043 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 3755607823625089725, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} - m_PrefabInstance: {fileID: 1293970797} - m_PrefabAsset: {fileID: 0} ---- !u!114 &108258044 +--- !u!114 &108258044 stripped MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 108258044, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} + m_PrefabInstance: {fileID: 1293970797} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 108258043} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 2c8f58020a68c9a4cad47eca148231ff, type: 3} @@ -9089,12 +9083,16 @@ PrefabInstance: m_Modifications: - target: {fileID: 2798309367730113166, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} propertyPath: m_LocalScale.x - value: 1 + value: 1.05 objectReference: {fileID: 0} - target: {fileID: 2798309367730113166, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} propertyPath: m_LocalScale.z - value: 1 + value: 1.05 objectReference: {fileID: 0} + - target: {fileID: 3755607823128161098, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} + propertyPath: m_Body + value: + objectReference: {fileID: 108258044} - target: {fileID: 3755607823128161140, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} propertyPath: m_RootOrder value: 13 @@ -9143,21 +9141,9 @@ PrefabInstance: propertyPath: m_Name value: Player objectReference: {fileID: 0} - - target: {fileID: 3755607823301764067, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} - propertyPath: m_SortingLayer - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3755607823301764067, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} - propertyPath: m_SortingLayerID - value: 2114570511 - objectReference: {fileID: 0} - - target: {fileID: 3755607823301764067, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 1f41374a6d8c5c14388e0da7ceb2fe37, type: 2} - target: {fileID: 6135652675925644977, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} propertyPath: m_IsTrigger - value: 0 + value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9fe5972a3b043bf459d903bda86ae2ba, type: 3} diff --git a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/FPSCharacterController.cs b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/FPSCharacterController.cs index c902a9d..c7a5560 100644 --- a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/FPSCharacterController.cs +++ b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/FPSCharacterController.cs @@ -261,8 +261,6 @@ namespace JamTools if(Input.GetButtonDown("Jump")) { - Debug.Log(m_WallChecker.normal); - m_Rigidbody.AddForce(m_WallChecker.normal * 100); } } @@ -274,8 +272,6 @@ namespace JamTools if (!m_WallChecker.IsOnWall) return; - - } void PullTrick() diff --git a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/PlayerBody.cs b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/PlayerBody.cs index 074b6f0..709b756 100644 --- a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/PlayerBody.cs +++ b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/PlayerBody.cs @@ -4,6 +4,20 @@ using UnityEngine; public class PlayerBody : MonoBehaviour { + private CapsuleCollider m_CapsuleCollider; + + public CapsuleCollider capsuleCollider + { + get + { + return m_CapsuleCollider; + } + } + + private void Awake() + { + m_CapsuleCollider = GetComponent(); + } private void OnCollisionEnter(Collision collision) { diff --git a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/WallChecker.cs b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/WallChecker.cs index 797b0b4..946c326 100644 --- a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/WallChecker.cs +++ b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController/WallChecker.cs @@ -14,51 +14,33 @@ public class WallChecker : MonoBehaviour } } - private Vector3 m_Normal; - public Vector3 normal + private List m_Colliders = new List(); + + private void Update() { - get + if (m_IsOnWall && m_Colliders.Count == 0) { - return m_Normal; + m_IsOnWall = false; } } - private void OnCollisionEnter(Collision collision) - { - Debug.Log("OnCollisionEnter"); - - m_IsOnWall = true; - m_Normal = collision.contacts[0].normal; - } - - private void OnCollisionStay(Collision collision) - { - m_IsOnWall = true; - - } - - private void OnCollisionExit(Collision collision) - { - m_IsOnWall = false; - - } - private void OnTriggerEnter(Collider other) { - Debug.Log("OnCollisionEnter"); - m_IsOnWall = true; + + m_Colliders.Add(other); } private void OnTriggerStay(Collider other) { - m_IsOnWall = true; - } private void OnTriggerExit(Collider other) { - m_IsOnWall = false; + if(m_Colliders.Contains(other)) + { + m_Colliders.Remove(other); + } } } diff --git a/JamTools/Assets/JamTools/Scripts/TestCollision.cs b/JamTools/Assets/JamTools/Scripts/TestCollision.cs new file mode 100644 index 0000000..87b018f --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/TestCollision.cs @@ -0,0 +1,51 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TestCollision : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + + private void OnCollisionEnter(Collision collision) + { + Debug.Log("OnCollisionEnter"); + + } + + private void OnCollisionStay(Collision collision) + { + + } + + private void OnCollisionExit(Collision collision) + { + + } + + + private void OnTriggerEnter(Collider other) + { + Debug.Log("OnTriggerEnter"); + + } + + private void OnTriggerStay(Collider other) + { + + } + + private void OnTriggerExit(Collider other) + { + } + +} diff --git a/JamTools/Assets/JamTools/Scripts/TestCollision.cs.meta b/JamTools/Assets/JamTools/Scripts/TestCollision.cs.meta new file mode 100644 index 0000000..4d5ff9b --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/TestCollision.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08a344d0f26d38142afbf1868e8e57b6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs b/JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs new file mode 100644 index 0000000..3efe155 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace JamTools +{ + + public static class ColliderUtility + { + private static readonly List s_Vertices = new List(); + + private static readonly List s_Triangles = new List(); + + private static Plane GetWorldTriangle(Transform collider, int index) + { + Vector3 position = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index]]; + Vector3 position2 = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index + 1]]; + Vector3 position3 = ColliderUtility.s_Vertices[ColliderUtility.s_Triangles[3 * index + 2]]; + return new Plane(collider.TransformPoint(position), collider.TransformPoint(position2), collider.TransformPoint(position3)); + } + + public static Vector3 FindClosestPoint(Collider collider, Vector3 position) + { + return ColliderUtility.FindClosestPoint(collider, position, false); + } + + public static Vector3 FindClosestPoint(Collider collider, Vector3 position, bool ignoreVerticalTriangles) + { + MeshCollider meshCollider; + if ((meshCollider = (collider as MeshCollider)) != null && !meshCollider.convex) + { + Mesh sharedMesh = meshCollider.sharedMesh; + sharedMesh.GetVertices(ColliderUtility.s_Vertices); + Plane plane = default(Plane); + float num = float.PositiveInfinity; + for (int i = 0; i < sharedMesh.subMeshCount; i++) + { + sharedMesh.GetTriangles(ColliderUtility.s_Triangles, i); + int j = 0; + int num2 = ColliderUtility.s_Triangles.Count / 3; + while (j < num2) + { + Plane worldTriangle = ColliderUtility.GetWorldTriangle(meshCollider.transform, j); + float num3 = Mathf.Abs(worldTriangle.GetDistanceToPoint(position)); + if ((!ignoreVerticalTriangles || (!(worldTriangle.normal == Vector3.up) && !(worldTriangle.normal == Vector3.down))) && ((i == 0 && j == 0) || num3 < num)) + { + plane = worldTriangle; + num = num3; + } + j++; + } + } + return plane.ClosestPointOnPlane(position); + } + return collider.ClosestPoint(position); + } + } + +} diff --git a/JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs.meta b/JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs.meta new file mode 100644 index 0000000..4d828ca --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Utils/ColliderUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17d16ee713041694bb7486e050909dd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- cgit v1.1-26-g67d0