敵にpublic flootを用いてInspectorでHPを設定できるようにし、HP=0になれば破壊するというスクリプトを作成しました。
破壊して、同じスクリプトを付けた敵を攻撃した際にHP=0のままのため、すぐに破壊されます。
HPをInspectorで設定した値に戻すにはどのようにすればよろしいのでしょうか?
Enemy_HPに値を設定しています。
こちらプレイヤーに付けているアクションのスクリプトの一部です。
void
1 { 2 //敵の時オブジェクトを破壊 3 if (col.gameObject.tag == "Enemy") 4 { 5 if (Action1) 6 { 7 enemy1script.Enemy_HP -= 10; 8 } 9 else if (Action2) 10 { 11 enemy1script.Enemy_HP -= 20; 12 } 13 14 if (enemy1script.Enemy_HP <= 0) 15 { 16 EnemyDestroy = true; 17 Debug.Log("damage"); 18 // Instantiate(explosion, col.gameObject.transform.position, col.gameObject.transform.rotation); 19 } 20 } 21 22 23 } 24コード
こちら破壊され、アイテムを出現させるスクリプトの一部です。
private
1 { 2 if(col.gameObject.tag == "UnityChan") 3 { 4 if(actionscript.EnemyDestroy == true) 5 { 6 // if (Random.Range(0, 1) == 0) 7 // { 8 Debug.Log("asaa"); 9 Instantiate(explosion, gameObject.transform.position, gameObject.transform.rotation); 10 Destroy(gameObject); 11 Instantiate(item, gameObject.transform.position, gameObject.transform.rotation); 12 if (ItemDrop == "Tue") 13 { 14 Tue = true; 15 } 16 else if (ItemDrop == "Soard") 17 { 18 Soard = true; 19 } 20 else if (ItemDrop == "Gun") 21 { 22 Gun = true; 23 } 24 actionscript.EnemyDestroy = false; 25// enemy1script.Enemy_HP = 100; 26 // } 27 } 28 29 } 30 } 31コード
まず、アクションのスクリプトにてHPを減らし、アイテムのスクリプトにて0以下になれば破壊、アイテムを出現させるというものです。
アイテムのスクリプトにてenemy1script.Enemy_HP=100;で無理やりHPを初期値に戻しましたが、こちらを
enemy1script.Enemy_HP=Inspectorで設定した値
にするにはどうすれば良いのでしょうか?
そこんところのコードの作りが悪いから、という回答になろうと思いますが、コードの提示がないとそれ以上は言えません。
コードの提示は、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
すみませんでした。修正いたしました。
Enemy_HP の定義はどうなっていますか?
public floot Enemy_HP = 100です。
問題点はenemy1script.Enemy_HPを共通で使用している事です。
enemy1scriptのクラスで定義されているEnemy_HPを「破壊され、アイテムを出現させるスクリプト」に移動させ、HPを個別に保持させれば新たに敵が生成された時に100で出現する筈です。
それをしない(出来ない)理由は有るのでしょうか?
習いたてで使いまわせば良いのかなと思っていました(-_-;)
なるほどですね!早速試してみたいと思います!
ありがとうございます。
あなたの回答
tips
プレビュー