void castAreaBullet() { if (spawnPoint == null) { return; } AreaBullet newBullet = Instantiate(bullet, spawnPoint.position, spawnPoint.rotation) as AreaBullet; newBullet.passValues(tm, range, damage, damage, character.getTarget()); }
//モンスターを作る void Evoche(Vector3 pos, Transform t) { //魔法カードの場合は if (selectedCard is SpellCard) { if (t == null && !t.GetComponent <Health>()) { return; } GameObject newCard = Instantiate(selectedCard.prefab[0], player.getKingTower().transform.position, Quaternion.identity) as GameObject; //カードに値を渡す AreaBullet b = newCard.GetComponent <AreaBullet>(); b.passValues(player.thisTeam, selectedCard.spellCard.radius, selectedCard.spellCard.areaDamage, selectedCard.spellCard.crownTowerDamage, t); } else if (selectedCard is BuildCard) { GameObject newCard = Instantiate(selectedCard.prefab[0], spawnposition, Quaternion.identity) as GameObject; player.addToEnemyList(newCard.transform); Build c = newCard.GetComponent <Build>(); if (c != null) { c.Init(Team); } } else { float x = 0; for (int i = 0; i < selectedCard.prefab.Length; i++) { if (i < 1) { spawnposition = pos; } GameObject newCard = Instantiate(selectedCard.prefab[i], spawnposition, Quaternion.identity) as GameObject; player.addToEnemyList(newCard.transform); //複数キャラクターの場合は、スポンポジションをを変わる Character c = newCard.GetComponent <Character>(); if (c != null) { c.Initialization(enemy); } if (i % 2 == 0) { x = 1; } else if (i % 3 == 0) { x = -1; } else { x = 0; } spawnposition = new Vector3(newCard.transform.position.x + x, newCard.transform.position.y, newCard.transform.position.z); } } mp -= selectedCard.cost; selectedCard = null; Invoke("drawNewCard", 1); }
void spawnMonster(Transform point) { //建物の場合は if (currentcard is BuildCard) { GameObject newCard = Instantiate(currentcard.prefab[0], spawnposition, Quaternion.identity) as GameObject; player.addToEnemyList(newCard.transform); Build c = newCard.GetComponent <Build>(); if (c != null) { c.Init(player.thisTeam); } } else if (currentcard is SpellCard) { List <Transform> targets = new List <Transform>(); foreach (var e in enemy.enemies) { if (e != null) { targets.Add(e); } } //順番に並ぶ targets.OrderBy(c => Vector3.Distance(player.getKingTower().transform.position, c.transform.position)); //最初の要素を選択する Transform target = targets[0]; if (target == null) { target = enemy.getKingTower().transform; } //スポーン GameObject newCard = Instantiate(currentcard.prefab[0], player.getKingTower().transform.position, Quaternion.identity) as GameObject; AreaBullet b = newCard.GetComponent <AreaBullet>(); b.passValues(player.thisTeam, currentcard.spellCard.radius, currentcard.spellCard.areaDamage, currentcard.spellCard.crownTowerDamage, target); } else { float x = 0; for (int i = 0; i < currentcard.prefab.Length; i++) { if (i < 1) { spawnposition = point.transform.position; } GameObject newCard = Instantiate(currentcard.prefab[i], point.position, Quaternion.identity) as GameObject; player.addToEnemyList(newCard.transform); Character c = newCard.GetComponent <Character>(); //複数キャラクターのスポーンポジションを決める if (c != null) { c.Initialization(enemy); } if (i % 2 == 0) { x = 1; } else if (i % 3 == 0) { x = -1; } else if (i % 5 == 0) { x = -1; } spawnposition = new Vector3(newCard.transform.position.x + x, newCard.transform.position.y, newCard.transform.position.z); } } lastcard = currentcard; draw(); }