public override IEnumerator PatternFramework(Pattern prevPattern) { PatternCircle pattern = prevPattern as PatternCircle; if (pattern == null) { yield break; } for (int i = 0; i < pattern.spawnedBulletList.Count; ++i) { if (pattern.spawnedBulletList[i] == null) { break; } Vector2 myPosition = pattern.spawnedBulletList[i].transform.position; // owner.transform.position; // Vector2 targetPosition = PlayerScript.player.transform.position; pattern.spawnedBulletList[i].direction = MyMath.GetDirection(myPosition, targetPosition); Boss1Bullet2 bullet = pattern.spawnedBulletList[i] as Boss1Bullet2; float speedWeight = Random.Range(0.5f, 1.5f); bullet.speed = bullet.originSpeed * speedWeight; } }
private PatternTimeStamp InitPatternTimeStamp(float delay, float directionRatio) { PatternCircle circle = new PatternCircle(); circle.bulletPrefab = bulletPrefab; circle.position = owner.transform.position; circle.count = 16; circle.angle = 360f; circle.directionRatio = directionRatio; return(new PatternTimeStamp(delay, circle)); }
void InitCircleSignal() { PatternCircle circle = new PatternCircle(); circle.bulletPrefab = bulletPrefab; circle.position = owner.transform.position; circle.count = 16; circle.angle = 360f; circle.distance = 2f; circle.delay = 0.03f; circle.bulletSpeed = 8f; patternTimeStamps.Add(new PatternTimeStamp(0f, circle)); PatternSignal signal = new PatternSignal(); signal.owner = owner; // circle 패턴의 탄막이 모두 생성된 후 0.1 초 뒤에 발사 patternTimeStamps.Add(new PatternTimeStamp(circle.count * circle.delay + 0.5f, signal)); }