summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Scripts/Physics
diff options
context:
space:
mode:
Diffstat (limited to 'AlienSurvival/Assets/Scripts/Physics')
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor.meta8
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs46
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta (renamed from AlienSurvival/Assets/Scripts/Physics/Transform2D.cs.meta)2
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs106
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/Transform2D.cs123
6 files changed, 172 insertions, 124 deletions
diff --git a/AlienSurvival/Assets/Scripts/Physics/Editor.meta b/AlienSurvival/Assets/Scripts/Physics/Editor.meta
new file mode 100644
index 0000000..fa70114
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 80c8d9ba082ca27419e9d6e6bbb39f6d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
new file mode 100644
index 0000000..b1139f2
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs
@@ -0,0 +1,46 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+
+[CustomEditor(typeof(TopDownTransform))]
+public class TopDownTransformInspector : Editor
+{
+
+ TopDownTransform m_TopDownTransform;
+
+ private void OnEnable()
+ {
+ m_TopDownTransform = target as TopDownTransform;
+ }
+
+ private void OnDisable()
+ {
+ }
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+ }
+
+ protected override void OnHeaderGUI()
+ {
+ base.OnHeaderGUI();
+ }
+
+ //https://answers.unity.com/questions/463207/how-do-you-make-a-custom-handle-respond-to-the-mou.html
+ private void OnSceneGUI()
+ {
+ Handles.color = Handles.xAxisColor;
+ m_TopDownTransform.x = EditorHandlesHelper.ScaleValue(m_TopDownTransform.x, m_TopDownTransform.Get3DPosition(), Vector3.right, 1f, Handles.ConeHandleCap, Quaternion.Euler(0, 90, 0), 1f, 0.1f);
+
+ Handles.color = Handles.yAxisColor;
+ m_TopDownTransform.y = EditorHandlesHelper.ScaleValue(m_TopDownTransform.y, m_TopDownTransform.Get3DPosition(), Vector3.up, 1f, Handles.ConeHandleCap, Quaternion.Euler(-90, 0, 0), 1f, 0.1f);
+
+ Handles.color = Handles.zAxisColor;
+ m_TopDownTransform.z = EditorHandlesHelper.ScaleValue(m_TopDownTransform.z, m_TopDownTransform.Get3DPosition() + new Vector3(0, -1.1f, 0), Vector3.up, 1f, Handles.ConeHandleCap, Quaternion.Euler(-90, 0, 0), 1f, 0.1f);
+
+ }
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs.meta b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta
index ee1038d..09d9899 100644
--- a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs.meta
+++ b/AlienSurvival/Assets/Scripts/Physics/Editor/TopDownTransformInspector.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 2b1fbd797bf03674e9d1b81edc11e3f1
+guid: a1871ab3b887e6b41ba4a43777b53192
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
new file mode 100644
index 0000000..3bb51b1
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs
@@ -0,0 +1,106 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+/// <summary>
+/// 用于TopDown的Transform,支持模拟垂直高度
+/// </summary>
+[ExecuteInEditMode]
+[RequireComponent(typeof(Transform))]
+public class TopDownTransform : MonoBehaviour
+{
+ // 右手系
+ // z
+ // |
+ // | /y
+ // | /
+ // |/______x
+
+ // x, y, z ( z = height)
+ [SerializeField] private Vector3 m_LocalPosition;
+
+ // 只能绕一个虚拟轴旋转
+ [SerializeField] private float m_LocalRotation;
+
+ // x, z
+ [SerializeField] private Vector2 m_LocalScale;
+
+ public float x
+ {
+ get
+ {
+ return m_LocalPosition.x;
+ }
+ set
+ {
+ m_LocalPosition.x = value;
+ Project();
+ }
+ }
+ public float y
+ {
+ get
+ {
+ return m_LocalPosition.y;
+ }
+ set
+ {
+ m_LocalPosition.y = value;
+ Project();
+ }
+ }
+
+ public float z
+ {
+ get
+ {
+ return m_LocalPosition.z;
+ }
+ set
+ {
+ m_LocalPosition.z = value;
+ Project();
+ }
+ }
+ /// <summary>
+ /// “投影”,把坐标转换到Transform上
+ /// </summary>
+ public void Project()
+ {
+ Vector3 pos = transform.position;
+ pos.x = m_LocalPosition.x;
+ pos.y = m_LocalPosition.y + m_LocalPosition.z;
+
+ transform.position = pos;
+ }
+
+ private void Update()
+ {
+ Project();
+ }
+
+ public Vector3 Get3DPosition()
+ {
+ Vector3 pos = new Vector3();
+ pos.x = m_LocalPosition.x;
+ pos.y = m_LocalPosition.y + m_LocalPosition.z;
+ pos.z = transform.position.z;
+ return pos;
+ }
+
+#if UNITY_EDITOR
+ private void OnDrawGizmos()
+ {
+ // dash line
+ Vector3 start = transform.position;
+ Vector3 end = start - new Vector3(0, m_LocalPosition.z, 0);
+
+ Handles.DrawDottedLine(start, end, 1f);
+ Handles.DrawWireCube(end, new Vector3(0.1f, 0.1f, 0f));
+ }
+#endif
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta
new file mode 100644
index 0000000..cc1445d
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/TopDownTransform.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2b1fbd797bf03674e9d1b81edc11e3f1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {fileID: 2800000, guid: b7cb09ba3d43de2418ea93e3aa9cd4e4, type: 3}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs b/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs
deleted file mode 100644
index 813b0c6..0000000
--- a/AlienSurvival/Assets/Scripts/Physics/Transform2D.cs
+++ /dev/null
@@ -1,123 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-// Topdown专用的transform
-public class Transform2D : MonoBehaviour
-{
- public const float ORTHO_FACTOR = 1f; // 45°
-
- public float alias_x
- {
- get
- {
- return z;
- }
- }
-
- public float alias_y
- {
- get
- {
- return -x;
- }
- }
-
- public float alias_h
- {
- get
- {
- return y;
- }
- }
-
- public float x
- {
- get
- {
- return 0;
- }
- }
-
- public float y
- {
- get
- {
- return 0;
- }
- set
- {
-
- }
- }
-
- public float z
- {
- get
- {
- return 0;
- }
- set
- {
-
- }
- }
-
- private Vector3 m_InnerPosition; // x, y, h
-
- public Vector3 position //
- {
- get
- {
- return m_InnerPosition;
- }
- }
-
- public float angle
- {
- get
- {
- return 0;
- }
- set
- {
-
- }
- }
-
- public Vector3 forward
- {
- get
- {
- return Vector3.zero;
- }
- }
-
- public Vector3 up
- {
- get
- {
- return Vector3.zero;
- }
- }
-
- public Vector3 right
- {
- get
- {
- return Vector3.zero;
- }
- }
-
- public Vector2 orthocoord
- {
- get
- {
- Vector2 ortho = new Vector2();
- ortho.x = x;
- ortho.y = y + ORTHO_FACTOR * z;
- return ortho;
- }
- }
-
-} \ No newline at end of file