前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ 特にないですが、キャラは自動生成です。 ### 該当のソースコード using UnityEngine; using UnityEngine.AI; [RequireComponent(typeof(NavMeshAgent))] public class Character : MonoBehaviour { private GameObject target; private NavMeshAgent agent; [SerializeField] private GameObject[] enemies; [SerializeField] private string attackTag; [SerializeField] private string attackTag1;//Inspectorで設定 private float stopDistance; private float attackTimer; private bool isAttack; //ここから public int distance; public int hp; public int power; public int attackTime; //ここまでInspectorで設定 private enum targetType { normal, castle, } private targetType currentTargetType; private void Awake() { agent = GetComponent<NavMeshAgent>(); } private void Start() { target = GameObject.Find(attackTag+attackTag1 + "Castle"); isAttack = false; } private void Update() { if (target == null) { target = GameObject.Find(attackTag+ attackTag1 + "Castle"); } SetStopDistance(); FintTarget(); agent.SetDestination(target.transform.position); if (Vector3.Distance(transform.position, target.transform.position) <= stopDistance) { isAttack = true; agent.speed = 0; } if (isAttack) { CheckNearTarget(); SetStopDistance(); //攻撃中にtargetが変わった時のためにここでも記述 Attack(); } } //targetが近くにいるのかどうか判定する private void CheckNearTarget() { if (Vector3.Distance(transform.position, target.transform.position) > stopDistance) { isAttack = false; agent.speed = 1; } } private void SetStopDistance() { if (target.gameObject.name.Contains("Castle")) { currentTargetType = targetType.castle; stopDistance = distance; } else { currentTargetType = targetType.normal; stopDistance = distance; } } private void FintTarget() { enemies = GameObject.FindGameObjectsWithTag(attackTag+ attackTag1); float closestDistance = Vector3.Distance(transform.position, target.transform.position); foreach (GameObject enemy in enemies) { if (Vector3.Distance(transform.position, enemy.transform.position) < closestDistance) { target = enemy; } } } private void Attack() { attackTimer += Time.deltaTime; switch (currentTargetType) { case (targetType.normal): if (attackTimer > 1) { target.GetComponent<Character>().hp -= power; attackTimer = 0f; } if (target.GetComponent<Character>().hp <= 0) { isAttack = false; Destroy(target.gameObject); agent.speed = 1; } break; case (targetType.castle): if (attackTimer > attackTime) { target.GetComponent<Castle>().hp -= power; attackTimer = 0f; } break; } } } C♯ここに言語名を入力 ソースコード
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
クラロワとゆうのは、フィールドにキャラを出して戦うカードゲームです
https://clashroyale.com/ja/
質問は編集できます
追記修正しましょう
何をしてどういう状況ですか?全然わからないので編集してください。
これでどうでしょうか?
「クラロワのように」
よくわかりません。もっと具体的で細かく書いてください。プログラム以外にも追加することがあると思います。
「クラロワのように」という説明だと、「クラロワ」がどういうものかわかっている人でないと回答が難しくなります。
つまり、回答できる可能性のある人が単純に減ってしまうのです。
「クラロワ」を知らない人にも伝わるような書き方だと、回答がより付きやすくなると思いますよ。
結局質問したいことは何でしょう?
補足情報に「クラロワとゆうのは、フィールドにキャラを出して戦うカードゲームです」と付け足され、urlだけが付け足されていますが、それだけでは全く伝わりません。(ちなみに公式サイトのurlを貼ったからゲーム内容が理解できる人はいないと思いますが)
というか、「カードゲーム」なのに「NavMeshAgent」を使ってる時点で、普通みなさんが思うカードゲームではないと思われます。
そしてソースコードも提示されていますが、パッとみる限りどこでつまづいているのかも分かりません。
まずは自分がどこで分からなくなっているのか、うまく出来ないところが何かを理解した上で、どういう風に実現したいのか、そのためには何が足りてないのか、もっと具体的に記述してください。
後質問内容が出来たら一度(可能な範囲で)第三者視点として読み返してみて、誰が読んでもどこが分からないのか理解できる文章で質問してください。
あなたの回答
tips
プレビュー