public static StasisBullet create(Vector3 position, Quaternion direction, Vector3 targetPos) { GameObject pref = Resources.Load <GameObject> ("Prefabs/StasisBullet"); GameObject inst = Instantiate <GameObject> (pref, position, Quaternion.identity); inst.transform.GetChild(0).rotation = Quaternion.Euler(0f, 0f, direction.eulerAngles.z - 180f); StasisBullet sb = inst.GetComponent <StasisBullet> (); sb.travelDist = Vector2.Distance(targetPos, sb.transform.position); sb.startPos = sb.transform.position; sb.dir = (direction * Vector3.up).normalized; return(sb); }
private static bool placeStasisBubble(Entity e, Vector2 tarPos) { if (!LevelStateManager.canAddStasisBubble()) { return(false); } float angle = Vector2.Angle(Vector2.up, tarPos - (Vector2)e.transform.position); float sign = e.transform.position.x < tarPos.x ? -1f : 1f; Quaternion rot = Quaternion.Euler(0f, 0f, angle * sign); StasisBullet s = StasisBullet.create(e.transform.position, rot, tarPos); Physics2D.IgnoreCollision(s.GetComponent <Collider2D> (), e.GetComponent <Collider2D> ()); return(true); }