public virtual void Hit(Vector3 position) { if (null != hitPrefab) { UnitHit hit = GameObject.Instantiate <UnitHit>(hitPrefab); hit.attack = this; hit.transform.position = position; } }
public override void OnInspectorGUI() { UnitHit hit = (UnitHit)target; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Shake Camera"); hit.shakeCamera = EditorGUILayout.Toggle(hit.shakeCamera); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Hit Count"); hit.hitCount = EditorGUILayout.IntField(hit.hitCount); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Collider Type"); UnitHit.ColliderType newColliderType = (UnitHit.ColliderType)EditorGUILayout.EnumPopup(hit.colliderType); EditorGUILayout.EndHorizontal(); if (newColliderType != hit.colliderType) { switch (hit.colliderType) { case UnitHit.ColliderType.Box: DestroyImmediate(hit.gameObject.GetComponent <BoxCollider2D> (), true); break; case UnitHit.ColliderType.Circle: DestroyImmediate(hit.gameObject.GetComponent <CircleCollider2D> (), true); break; case UnitHit.ColliderType.Ellipse: DestroyImmediate(hit.gameObject.GetComponent <EllipseCollider2D> (), true); DestroyImmediate(hit.gameObject.GetComponent <EdgeCollider2D> (), true); break; } switch (newColliderType) { case UnitHit.ColliderType.Box: hit.gameObject.AddComponent <BoxCollider2D> ().isTrigger = true;; break; case UnitHit.ColliderType.Circle: hit.gameObject.AddComponent <CircleCollider2D> ().isTrigger = true; break; case UnitHit.ColliderType.Ellipse: hit.gameObject.AddComponent <EllipseCollider2D> (); hit.gameObject.GetComponent <EdgeCollider2D> ().isTrigger = true;; break; } } hit.colliderType = newColliderType; }