Commit 42671db1 authored by 16이진형's avatar 16이진형

2번 충돌하는 문제 해결

parent 08c6c35c
......@@ -27,6 +27,12 @@ public class ExtrudedMesh : MonoBehaviour
private MeshExtrusion.Edge[] precomputedEdges;
int cnt = 0;
FlatlandMovement myMovement;
public Hash128 hash;
static int hashNum = 0;
public class ExtrudedTrailSection
{
public Vector3 point;
......@@ -42,6 +48,10 @@ public class ExtrudedMesh : MonoBehaviour
GetComponent<MeshCollider>().sharedMesh = GetComponent<MeshFilter>().mesh;
prevtime = Time.time;
transform.SetAsFirstSibling();
myMovement = transform.parent.GetComponent<FlatlandMovement>();
hash = Hash128.Compute(gameObject.name + hashNum++);
}
List<ExtrudedTrailSection> sections = new List<ExtrudedTrailSection>();
......@@ -60,6 +70,9 @@ public class ExtrudedMesh : MonoBehaviour
{
var clone = Instantiate(transform.parent.gameObject, transform.parent.position, transform.parent.rotation);
clone.GetComponentInChildren<MeshFilter>().sharedMesh = clone.GetComponentInChildren<MeshFilter>().mesh;
clone.GetComponentInChildren<ExtrudedMesh>().hash = hash;
var x = clone.GetComponents(typeof(Component));
foreach(var t in x)
{
......@@ -170,26 +183,40 @@ public class ExtrudedMesh : MonoBehaviour
public void OnCollisionStay(Collision collision)
{
if (transform.parent.GetComponent(typeof(FlatlandMovement)) == null)
if (myMovement == null)
{
return;
}
else
transform.parent.GetComponent<FlatlandMovement>().OnCollisionStaychild(collision);
{
myMovement.OnCollisionStaychild(collision);
}
}
public void OnCollisionEnter(Collision collision)
{
if (transform.parent.GetComponent(typeof(FlatlandMovement)) == null)
if (myMovement == null)
{
return;
}
else
transform.parent.GetComponent<FlatlandMovement>().OnCollisionEnterchild(collision);
{
myMovement.OnCollisionEnterchild(collision);
}
}
public void OnCollisionExit(Collision collision)
{
if (transform.parent.GetComponent(typeof(FlatlandMovement)) == null)
if (myMovement == null)
{
return;
}
else
transform.parent.GetComponent<FlatlandMovement>().OnCollisionExitchild(collision);
{
myMovement.OnCollisionExitchild(collision);
}
}
}
......@@ -46,6 +46,8 @@ public class FlatlandMovement : MonoBehaviour
/// </summary>
Queue<float> pathVelocitys = new Queue<float>();
List<Hash128> collisions = new List<Hash128>();
protected void Start()
{
Physics.IgnoreLayerCollision(0, 1);
......@@ -275,12 +277,27 @@ public class FlatlandMovement : MonoBehaviour
/// <param name="collision"></param>
public virtual void OnCollisionEnterchild(Collision collision)
{
if(collision.gameObject.GetComponent<ExtrudedMesh>() == null)
{
return;
}
if(collisions.IndexOf(collision.gameObject.GetComponent<ExtrudedMesh>().hash) != -1)
{
return;
}
collisions.Add(collision.gameObject.GetComponent<ExtrudedMesh>().hash);
var tmp = collision.GetContact(0).normal;
tmp = new Vector3(tmp.x, 0, tmp.z);
tmp = tmp.normalized;
tmp *= 100;
collisionforce = tmp;
alpha += collisionforce;
Debug.Log(collisions.Count);
}
/// <summary>
/// 나갔을때 호출
......@@ -288,6 +305,18 @@ public class FlatlandMovement : MonoBehaviour
/// <param name="collision"></param>
public virtual void OnCollisionExitchild(Collision collision)
{
if (collision.gameObject.GetComponent<ExtrudedMesh>() == null)
{
return;
}
if (collisions.IndexOf(collision.gameObject.GetComponent<ExtrudedMesh>().hash) == -1)
{
return;
}
collisions.Remove(collision.gameObject.GetComponent<ExtrudedMesh>().hash);
alpha -= collisionforce;
collisionforce = new Vector3(0, 0, 0);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment