すみません、質問させてください。
3Dキャラに剣を持たせて振った時だけ、攻撃判定が出るようにしたいです。
現状、剣を持たせてenemyタグのcolliderに剣にcomponentした剣タグのcolliderが接触した場合に
damege()を呼び出すように設定しています。
つまり、持っているだけの剣に敵が接触してもdamege()が呼び出されてしまいます。
これに対して、剣colliderをプレハブ化して、攻撃中のみ剣の位置にspawnさせるという様にするのが良いのでしょうか??
初歩的な質問で申し訳ないですがよろしくおねがいします。
スクリプトはC♯で返答いただけるとありがたいです。
(**以下、追記)
C#
1 2 3public class Mycontrol : MonoBehaviour {//自キャラコントロールスクリプト 4CharacterController characterController; 5 public GameObject Sw_Qb = null;//攻撃判定用キューブ 6 public GameObject Sw_Qb_POS = null;//攻撃判定用キューブの生成される位置の親のオブジェクト(この場合は、剣) 7//(中略) 8 void Attack() { MakeCollider(); }//Attackアニメーションのイベント→当たり判定を呼び出す(スクリプト的には意味ないけど一応書く) 9 void MakeCollider() { GameObject.Instantiate(Sw_Qb, Sw_Qb_POS.transform.position, Quaternion.identity); //攻撃判定用のCubeCollider生成 10}
C#
1public class Wepon : MonoBehaviour//Sw_Qbのプレハブに追加 2 3{ 4 public int Power = 50; //攻撃力 5 private float time = 0; 6 public float interbal =0.5f; //攻撃判定残留時間 7 8 // Use this for initialization 9 // Update is called once per frame 10 void Update() 11 { 12 time += Time.deltaTime; 13 if (time > interbal) { Destroy(this.gameObject); } 14 15 16 17 } 18 void OnTriggerEnter(Collider col)//ぶつかった時実行 19 { 20 21 22 if (col.gameObject.tag == "Enemy")//Enemyとだったら 23 { 24 col.gameObject.SendMessage("Damage", Power);//ダメージを与える 25 col.gameObject.SendMessage("sw_ef");//斬撃エフェクトを与える 26 27 } 28 }
これで何とか動作しました!!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/28 06:57