public void InitializeBullet(EnemyShotBehavior behavior, EnemyApi api) { this.Behavior = behavior; this.Api = api; IsVisible = true; Behavior.Initialize(this); Behavior.Start(); }
private IEnumerator Animate() { yield return(new WaitForSeconds(0.1f)); var player = GameManager.I.Player; var enemy = GameManager.I.Enemy; var api = new EnemyApi(GameManager.I.Enemy); api.MoveIt(enemy.InitialPosition, 20); player.ForceToMove(-enemy.InitialPosition, 20); yield return(GameUiManager.I.AnimateGameStart()); context.ChangeState(GameManager.PlayStateName); context.EventAccepter.OnRoundStartSubject.OnNext(Unit.Default); }
/// <summary> /// 敵キャラクターのステートを初期化し、動作を開始します。 /// </summary> public void StartEnemyAction() { var api = new EnemyApi(Enemy) { BulletRenderer = bulletRenderer }; var context = new EnemyStateContext { Api = api, BulletRenderer = bulletRenderer, Enemy = Enemy, InitialPos = Enemy.InitialPosition, EventAccepter = eventFacade, Behaviors = EnemyStrategy.GetBehaviors(api).GetEnumerator() }; context.ChangeState(Enemy.NextRoundStateName); }
private TShot InitializeShot <TShot>(GameObject shot, EnemyShotBehavior behavior, List <TShot> list, Vector3 source, float angle, float speed, EnemyApi api) where TShot : EnemyShot { shot.transform.position = source; shot.transform.SetEulerAnglesZ(0); shot.transform.parent = SpriteStudioManager.I.ManagerDraw.transform; var velocity = Vector2Extensions.FromAngleLength(angle, speed); var rigidbody = shot.GetComponent <Rigidbody2D>(); rigidbody.velocity = velocity; var script = shot.GetComponent <TShot>(); script.InitializeBullet(behavior, api); script.DestroyEvent.Subscribe(u => list.Remove(script)); list.Add(script); shot.GetComponent <Collider2D>().enabled = true; return(script); }
/// <summary> /// モブを発射します。 /// </summary> /// <returns>発射したモブを表すオブジェクト。</returns> /// <param name="source">発射地点。</param> /// <param name="angle">発射する角度。</param> /// <param name="speed">発射する速度。</param> public Mob ShotMob(Vector3 source, float angle, float speed, EnemyShotBehavior behavior, EnemyApi api) { var shot = GameManager.I.PoolManager.GetInstance(ObjectPoolManager.Kind.Mob); if (shot != null) { return(InitializeShot(shot, behavior, Mobs, source, angle, speed, api)); } return(null); }
public void InitializeAsync(EnemyApi api) { Api = api; }
public IEnumerable <EnemyBehavior> GetBehaviors(EnemyApi api) { return(behaviors); }