summaryrefslogtreecommitdiff
path: root/AlienSurvival/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'AlienSurvival/Assets/Scripts')
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/AABBShape.cs45
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/AABBShape.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/BoxShape.cs10
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/BoxShape.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/CircleShape.cs18
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/CircleShape.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs18
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs18
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs9
-rw-r--r--AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs.meta11
-rw-r--r--AlienSurvival/Assets/Scripts/TopDown/TopDownShadowCaster.cs6
-rw-r--r--AlienSurvival/Assets/Scripts/TopDown/TopDownTransform.cs33
14 files changed, 218 insertions, 5 deletions
diff --git a/AlienSurvival/Assets/Scripts/Physics/AABBShape.cs b/AlienSurvival/Assets/Scripts/Physics/AABBShape.cs
new file mode 100644
index 0000000..5105c72
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/AABBShape.cs
@@ -0,0 +1,45 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+#endif
+
+[RequireComponent(typeof(TopDownTransform))]
+public class AABBShape : ShapeBase
+{
+
+ [Tooltip("中心点(相对此节点的偏移)")]
+ [SerializeField] private Vector2 m_Centre;
+ public Vector2 centre { get { return m_Centre;} set { m_Centre = value; } }
+
+ [Tooltip("大小(TopDown空间下)")]
+ [SerializeField] private Vector2 m_Size;
+ public Vector2 size { get { return m_Size; } set { m_Size = value; } }
+
+ private TopDownTransform m_TopDownTransform;
+ private TopDownTransform topdownTransform
+ {
+ get
+ {
+ if(m_TopDownTransform == null)
+ {
+ m_TopDownTransform = GetComponent<TopDownTransform>();
+ }
+
+ return m_TopDownTransform;
+ }
+ }
+
+#if UNITY_EDITOR
+
+ private void OnDrawGizmos()
+ {
+ Vector3 pos = topdownTransform.Get3DPosition();
+ Handles.color = Color.green;
+ Handles.DrawWireCube(pos + new Vector3(m_Centre.x, m_Centre.y, 0), new Vector3(size.x, size.y, 0));
+ }
+
+#endif
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/AABBShape.cs.meta b/AlienSurvival/Assets/Scripts/Physics/AABBShape.cs.meta
new file mode 100644
index 0000000..e7c4f4f
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/AABBShape.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b0b865519e5d4f647a0dd9ea2df1236e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/BoxShape.cs b/AlienSurvival/Assets/Scripts/Physics/BoxShape.cs
new file mode 100644
index 0000000..b5a4e7b
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/BoxShape.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+[RequireComponent(typeof(TopDownTransform))]
+public class BoxShape : ShapeBase
+{
+
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/BoxShape.cs.meta b/AlienSurvival/Assets/Scripts/Physics/BoxShape.cs.meta
new file mode 100644
index 0000000..03de3e1
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/BoxShape.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bdcf6431eefbc384b8c38c8323bb1c89
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/CircleShape.cs b/AlienSurvival/Assets/Scripts/Physics/CircleShape.cs
new file mode 100644
index 0000000..3626598
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/CircleShape.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+[RequireComponent(typeof(TopDownTransform))]
+public class CircleShape : ShapeBase
+{
+ [Tooltip("圆心(相对此节点的偏移)")]
+ [SerializeField] private Vector2 m_Centre;
+ public Vector2 centre { get { return m_Centre; } set { m_Centre = value; } }
+
+ [Tooltip("半径(TopDown空间下)")]
+ [SerializeField] private float m_Radius;
+ public float radius { get { return m_Radius; } set { m_Radius = value; } }
+
+
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/CircleShape.cs.meta b/AlienSurvival/Assets/Scripts/Physics/CircleShape.cs.meta
new file mode 100644
index 0000000..814087d
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/CircleShape.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2a0bd7154c667b741961ea5ed11902e5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs b/AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs
new file mode 100644
index 0000000..907ca05
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PhysicsHelper : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs.meta b/AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs.meta
new file mode 100644
index 0000000..8fa3233
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/PhysicsHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7f9f362c9de0e554a86367b068464b72
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs b/AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs
new file mode 100644
index 0000000..ce17bfe
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PolygonShape : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs.meta b/AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs.meta
new file mode 100644
index 0000000..6116bdb
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/PolygonShape.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0cb3172194a30a741861e9cbb48bfb67
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs b/AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs
new file mode 100644
index 0000000..a0eba25
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs
@@ -0,0 +1,9 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ShapeBase : MonoBehaviour
+{
+
+
+} \ No newline at end of file
diff --git a/AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs.meta b/AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs.meta
new file mode 100644
index 0000000..3942766
--- /dev/null
+++ b/AlienSurvival/Assets/Scripts/Physics/ShapeBase.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 765f0727121051042866a2c615ab2560
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AlienSurvival/Assets/Scripts/TopDown/TopDownShadowCaster.cs b/AlienSurvival/Assets/Scripts/TopDown/TopDownShadowCaster.cs
index e027771..6741275 100644
--- a/AlienSurvival/Assets/Scripts/TopDown/TopDownShadowCaster.cs
+++ b/AlienSurvival/Assets/Scripts/TopDown/TopDownShadowCaster.cs
@@ -21,7 +21,7 @@ public class TopDownShadowCaster : MonoBehaviour
m_ShadowRenderer.flipX = flip;
}
- private void Start()
+ private void Awake()
{
m_Coord = GetComponent<TopDownTransform>();
m_SpriteRenderer = GetComponent<SpriteRenderer>();
@@ -42,6 +42,10 @@ public class TopDownShadowCaster : MonoBehaviour
}
}
+ private void Start()
+ {
+ }
+
private void Update()
{
if (m_Shadow == null)
diff --git a/AlienSurvival/Assets/Scripts/TopDown/TopDownTransform.cs b/AlienSurvival/Assets/Scripts/TopDown/TopDownTransform.cs
index db52445..b1fdefe 100644
--- a/AlienSurvival/Assets/Scripts/TopDown/TopDownTransform.cs
+++ b/AlienSurvival/Assets/Scripts/TopDown/TopDownTransform.cs
@@ -91,16 +91,35 @@ public class TopDownTransform : MonoBehaviour
}
}
+ // 地表坐标(Topdown空间)
+ public Vector3 positionOnGround
+ {
+ set
+ {
+ Vector3 pos = position;
+ pos.x = value.x;
+ pos.y = value.y;
+ position = pos;
+ Project();
+ }
+ get
+ {
+ Vector3 pos = position;
+ pos.z = 0;
+ return pos;
+ }
+ }
+
/// <summary>
/// “投影”,把坐标转换到Transform上
/// </summary>
public void Project()
{
- Vector3 pos = transform.position;
+ Vector3 pos = transform.localPosition;
pos.x = m_LocalPosition.x;
pos.y = m_LocalPosition.y + m_LocalPosition.z;
- transform.position = pos;
+ transform.localPosition = pos;
}
private void Start()
@@ -118,23 +137,29 @@ public class TopDownTransform : MonoBehaviour
Project();
}
+ #region 转换到3D笛卡尔空间
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;
+ pos.z = transform.localPosition.z;
return pos;
}
+ /// <summary>
+ /// 注意是在3D空间下
+ /// </summary>
+ /// <returns></returns>
public Vector3 GetGround3DPosition()
{
Vector3 pos = new Vector3();
pos.x = m_LocalPosition.x;
pos.y = m_LocalPosition.y ;
- pos.z = transform.position.z;
+ pos.z = transform.localPosition.z;
return pos;
}
+ #endregion
#if UNITY_EDITOR
private void OnDrawGizmos()