前提・実現したいこと
まだUnity初心者で、今軽いアクション系のFPSを作っています。
シューティング要素を入れておりRayで操作しています。敵として、ロボットを作成し、ヘッドショット、ボディショットとして分けています。ヘッドとボディでColliderを分け、それぞれにスクリプトを入れて、ヘッドボディを分割させています。
発生している問題・エラーメッセージ
一つのロボットが倒れると他のも同じプログラムで動かしているので同時に倒れてしまいます。
該当のソースコード
ロボットのダメージ管理のスクリプト
C#
1public class RobotDamage : MonoBehaviour 2{ 3 public static float currentHealth = 3f; 4 public GameObject thisBot; 5 private void Update() 6 { 7 if (currentHealth <= 0) 8 { 9 thisBot.SetActive(false); 10 } 11 } 12}
ロボットヘッドコライダのスクリプト
C#
1public class RobotHead : MonoBehaviour 2{ 3 public void Damage(float damageAmount) 4 { 5 RobotDamage.currentHealth -= damageAmount; 6 7 } 8}
ロボットボディコライダのスクリプト
public class RobotBody : MonoBehaviour { public void Damage(float damageAmount) { RobotDamage.currentHealth -= damageAmount; } }
Rayのスクリプト
if(Physics.Raycast(rayOrigin,fpsCam.transform.forward,out hit, weaponRange)) { laserLine.SetPosition(1, hit.point); RobotHead head = hit.collider.GetComponent<RobotHead>(); RobotBody body = hit.collider.GetComponent<RobotBody>(); if(head != null) { head.Damage (headDamage); } if(head != null && hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * hitForce); } if (body != null) { body.Damage(bodyDamage); } if (body != null && hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * hitForce); } }
試したこと
一つ一つのロボットにつきスクリプトを与えましたが、数が多くなってきて、これだと重くなってしまうと思って質問しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/08 21:55
2020/09/09 12:10
2020/09/09 13:46