/// <summary> /// 제공된 설정으로 꼬리에 콜리 더 생성하기 /// </summary> private void AddColliders() { collisionOffsets = new List <Vector3>(); collisionFlags = new List <float>(); collisionContacts = new List <Collision>(); collisionOffsets.Add(Vector3.zero); collisionFlags.Add(0f); collisionContacts.Add(null); for (int i = 1; i < TailTransforms.Count; i++) { collisionOffsets.Add(Vector3.zero); collisionContacts.Add(null); collisionFlags.Add(0f); if (CollidersSameLayer) { TailTransforms[i].gameObject.layer = gameObject.layer; } else { TailTransforms[i].gameObject.layer = CollidersLayer; } } if (CollidersType == FTailColliders.Boxes) { for (int i = 1; i < TailTransforms.Count; i++) { BoxCollider b = TailTransforms[i].gameObject.AddComponent <BoxCollider>(); FTail_CollisionHelper tcol = TailTransforms[i].gameObject.AddComponent <FTail_CollisionHelper>().Init(CollidersAddRigidbody); tcol.index = i; tcol.ParentTail = this; b.size = GetColliderBoxSizeFor(TailTransforms, i); } } else { for (int i = 1; i < TailTransforms.Count; i++) { SphereCollider b = TailTransforms[i].gameObject.AddComponent <SphereCollider>(); FTail_CollisionHelper tcol = TailTransforms[i].gameObject.AddComponent <FTail_CollisionHelper>().Init(CollidersAddRigidbody); tcol.index = i; tcol.ParentTail = this; b.radius = GetColliderSphereRadiusFor(TailTransforms, i); } } }
private void OnCollisionEnter(Collision collision) { if (ParentTail == null) { GameObject.Destroy(this); return; } FTail_CollisionHelper helper = collision.transform.GetComponent <FTail_CollisionHelper>(); if (helper) { if (ParentTail.CollideWithOtherTails == false) { return; } if (helper.ParentTail == ParentTail) { return; } } //if (ParentTail.TailTransforms.Contains(collision.transform)) return; if (previousCollision != null) { return; } if (ParentTail.IgnoredColliders.Contains(collision.collider)) { return; } //if (ParentTail.CollideWithOtherTails == false) if (collision.transform.GetComponent<FTail_CollisionHelper>()) return; ParentTail.CollisionDetection(index, collision); previousCollision = collision.transform; }