Added custom collision
This commit is contained in:
@@ -56,7 +56,6 @@ GameObject:
|
||||
- component: {fileID: 1739635715747709762}
|
||||
- component: {fileID: 5026174633141696716}
|
||||
- component: {fileID: 8577569336777110376}
|
||||
- component: {fileID: 4859736940813683666}
|
||||
m_Layer: 0
|
||||
m_Name: Model
|
||||
m_TagString: Enemy
|
||||
@@ -129,48 +128,3 @@ MeshFilter:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4804673878835712602}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!61 &4859736940813683666
|
||||
BoxCollider2D:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4804673878835712602}
|
||||
m_Enabled: 1
|
||||
m_Density: 1
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_ForceSendLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_ForceReceiveLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_ContactCaptureLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_CallbackLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_IsTrigger: 0
|
||||
m_UsedByEffector: 0
|
||||
m_UsedByComposite: 0
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_SpriteTilingProperty:
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
pivot: {x: 0, y: 0}
|
||||
oldSize: {x: 0, y: 0}
|
||||
newSize: {x: 0, y: 0}
|
||||
adaptiveTilingThreshold: 0
|
||||
drawMode: 0
|
||||
adaptiveTiling: 0
|
||||
m_AutoTiling: 0
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 1, y: 1}
|
||||
m_EdgeRadius: 0
|
||||
|
||||
@@ -4,6 +4,12 @@ public class EnemyController : OrbitalPositionBehaviour
|
||||
{
|
||||
public override void OnStart()
|
||||
{
|
||||
m_OrbitalPosition.m_DeletedAtCentre = true;
|
||||
transform.position = new Vector3(0, 0, -200f);
|
||||
m_OrbitalPosition.RadiusDistance = 0.2f;
|
||||
}
|
||||
|
||||
public override void OnReachCentre()
|
||||
{
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,16 +7,17 @@ public class OrbitalPosition
|
||||
public Int64 pRing = 0;
|
||||
public float DistanceFromCentre = 0;
|
||||
public float RadiusDistance = 0;
|
||||
public float ObjectRadius = 0.1f;
|
||||
|
||||
public Transform owner = null;
|
||||
public OrbitalPositionBehaviour Behaviour;
|
||||
public Transform Owner = null;
|
||||
|
||||
public int m_SpinSpeed = 1;
|
||||
public bool m_DeletedAtCentre = false;
|
||||
public int SpinSpeed = 1;
|
||||
|
||||
public OrbitalPosition(GameObject _owner)
|
||||
{
|
||||
pRing = GlobalOrbitalPositionManager.LastRingID;
|
||||
owner = _owner.transform;
|
||||
Owner = _owner.transform;
|
||||
}
|
||||
|
||||
public Vector3 TranslateToVec3() => new
|
||||
@@ -38,6 +39,9 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
|
||||
private readonly List<Ring> m_Rings = new();
|
||||
private readonly Dictionary<Int64, float> m_Distances = new();
|
||||
|
||||
private OrbitalPosition m_PlayerOrbitalPosition;
|
||||
public static void SetPlayer(OrbitalPosition player) => s_Instance.m_PlayerOrbitalPosition = player;
|
||||
|
||||
private float m_TimeOfLastRingSpawn = float.NegativeInfinity;
|
||||
|
||||
private Int64 m_LastGeneratedRing = 0;
|
||||
@@ -69,7 +73,7 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
|
||||
s_Instance.m_PrecalculatedPositions[CIRCLE_POINTS] = s_Instance.m_PrecalculatedPositions[0];
|
||||
}
|
||||
|
||||
public void Update()
|
||||
private void Update()
|
||||
{
|
||||
if (Time.time - m_TimeOfLastRingSpawn > GlobalOrbitalSettings.GapDistance)
|
||||
{
|
||||
@@ -130,12 +134,7 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
|
||||
{
|
||||
if (!m_Distances.ContainsKey(orbitalPosition.pRing))
|
||||
{
|
||||
if (orbitalPosition.m_DeletedAtCentre)
|
||||
{
|
||||
Destroy(orbitalPosition.owner.gameObject);
|
||||
continue;
|
||||
}
|
||||
|
||||
orbitalPosition.Behaviour.OnReachCentre();
|
||||
orbitalPosition.pRing = m_LastGeneratedRing;
|
||||
}
|
||||
|
||||
@@ -143,7 +142,26 @@ public class GlobalOrbitalPositionManager : MonoBehaviour
|
||||
orbitalPosition.DistanceFromCentre = distance;
|
||||
orbitalPosition.RadiusDistance = (orbitalPosition.RadiusDistance + (Time.deltaTime * GlobalOrbitalSettings.RadiusSpeed)) % (Mathf.PI * 2);
|
||||
|
||||
orbitalPosition.owner.position = orbitalPosition.TranslateToVec3();
|
||||
orbitalPosition.Owner.position = orbitalPosition.TranslateToVec3();
|
||||
}
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
foreach (OrbitalPosition orbital in m_ObjectInstances)
|
||||
{
|
||||
if (orbital == m_PlayerOrbitalPosition)
|
||||
continue;
|
||||
|
||||
Vector2 a = orbital.TranslateToVec3();
|
||||
Vector2 b = m_PlayerOrbitalPosition.TranslateToVec3();
|
||||
float distance = (a - b).magnitude;
|
||||
float radii = orbital.ObjectRadius + m_PlayerOrbitalPosition.ObjectRadius;
|
||||
if (distance < radii)
|
||||
{
|
||||
orbital.Behaviour.OnCollision(m_PlayerOrbitalPosition.Behaviour);
|
||||
m_PlayerOrbitalPosition.Behaviour.OnCollision(orbital.Behaviour);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,9 +178,12 @@ public abstract class OrbitalPositionBehaviour : MonoBehaviour
|
||||
|
||||
private void Start()
|
||||
{
|
||||
m_OrbitalPosition = new OrbitalPosition(gameObject);
|
||||
GlobalOrbitalPositionManager.RegisterOrbitalPositionInstance(m_OrbitalPosition);
|
||||
m_OrbitalPosition = new OrbitalPosition(gameObject)
|
||||
{
|
||||
Behaviour = this
|
||||
};
|
||||
|
||||
GlobalOrbitalPositionManager.RegisterOrbitalPositionInstance(m_OrbitalPosition);
|
||||
OnStart();
|
||||
}
|
||||
|
||||
@@ -170,4 +191,8 @@ public abstract class OrbitalPositionBehaviour : MonoBehaviour
|
||||
GlobalOrbitalPositionManager.UnregisterOrbitalPositionInstance(m_OrbitalPosition);
|
||||
|
||||
public virtual void OnStart() { }
|
||||
|
||||
public virtual void OnReachCentre() { }
|
||||
|
||||
public virtual void OnCollision(OrbitalPositionBehaviour other) { }
|
||||
}
|
||||
|
||||
@@ -2,12 +2,12 @@ using UnityEngine;
|
||||
|
||||
public class PlayerController : OrbitalPositionBehaviour
|
||||
{
|
||||
float m_StartPosition;
|
||||
public GameObject m_EnemyPrefab;
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
m_OrbitalPosition.DistanceFromCentre = m_StartPosition;
|
||||
GlobalOrbitalPositionManager.SetPlayer(m_OrbitalPosition);
|
||||
m_OrbitalPosition.RadiusDistance = 0.4f;
|
||||
}
|
||||
|
||||
public void Update()
|
||||
@@ -22,4 +22,9 @@ public class PlayerController : OrbitalPositionBehaviour
|
||||
Instantiate(m_EnemyPrefab);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnCollision(OrbitalPositionBehaviour other)
|
||||
{
|
||||
Debug.Log("HIT OBSTACLE IG");
|
||||
}
|
||||
}
|
||||
|
||||
16
ProjectSettings/TimelineSettings.asset
Normal file
16
ProjectSettings/TimelineSettings.asset
Normal file
@@ -0,0 +1,16 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &1
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 53
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a287be6c49135cd4f9b2b8666c39d999, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
assetDefaultFramerate: 60
|
||||
m_DefaultFrameRate: 60
|
||||
Reference in New Issue
Block a user