// Start is called before the first frame update void Start() { Character Player1 = Character1.GetComponent <Character>(); Character Player2 = Character2.GetComponent <Character>(); Character Player3 = Character3.GetComponent <Character>(); Character Player4 = Character4.GetComponent <Character>(); Enemy Enemy1 = EnemyBattler.GetComponent <Enemy>(); //Jag vet inget mer effektivt sätt att samla allt i en Public lista än det här CharacterList.Add(Player1); CharacterList.Add(Player2); CharacterList.Add(Player3); CharacterList.Add(Player4); EnemyList.Add(Enemy1); PositionList.Add(Character1); PositionList.Add(Character2); PositionList.Add(Character3); PositionList.Add(Character4); attackButton.onClick.AddListener(Attack); skillButton.onClick.AddListener(Skills); personaButton.onClick.AddListener(Personas); guardButton.onClick.AddListener(Guard); cancel.onClick.AddListener(Cancel); dataHandler = dataHandlerOBJ.GetComponent <Ownership>(); }
public Skill DetermineSkill(BattleContext context, Skill[] skills) { (Skill, int priority)candidate = (null, -context.Enemy.Hp); // シミュレーション中に発動するスキルのメッセージを表示しないようにするためのクローン var cloneContext = new BattleContext(new NullView()) { Enemy = context.Enemy, Player = context.Player }; foreach (var skill in skills) { // シミュレーション中に敵が受けるダメージを実際には反映しないためのクローン // 割愛しているが、実際はプレイヤーのクローンも生成しておいたり、 // バトラーのクローンはBattleContext.Enemyなどにもsetしておいたほうが // 独特なスキルをたくさん実装する際に安全 var clone = new EnemyBattler() { Hp = context.Enemy.Hp, Defense = context.Enemy.Defense }; skill.Run(cloneContext, clone); var priority = -clone.Hp; if (candidate.priority < priority) { candidate = (skill, priority); } } return(candidate.Item1); }
public static void Main() { var enemy1 = new EnemyBattler() { Hp = 45, Defense = 25, }; var enemy2 = new EnemyBattler() { Hp = 100, Defense = 0, }; var enemy3 = new EnemyBattler() { Hp = 100, Defense = 19, }; var context = new BattleContext(new ConsoleView()) { Enemy = enemy2, Player = new PlayerBattler() { Hp = 100, Defense = 0, Skills = new Skill[] { new SingleAttackSkill(87), new TripleAttackSkill(39), } } }; context.View.Talk($"プレイヤーのHP:{context.Player.Hp}"); context.View.Talk($"敵のHP:{context.Enemy.Hp}"); while (true) { context.Player.Act(context); if (context.Enemy.Hp <= 0) { context.View.Talk("敵は倒れた!"); context.View.Talk("プレイヤーの勝ち"); return; } context.Enemy.Act(context); if (context.Player.Hp <= 0) { context.View.Talk("プレイヤーは倒れた!"); context.View.Talk("敵の勝ち"); return; } } }
public override void Awake(StateMachine stateMachine) { _enemyTrans = GameObject.FindGameObjectWithTag("Player").transform; _enemyBattler = stateMachine.GetComponent <EnemyBattler>(); }
public override void Awake(StateMachine stateMachine) { _enemyBattler = stateMachine.GetComponent <EnemyBattler>(); }