【Unity】プレイヤーを向いて弾を発射する敵を作ってみよう!

Unity

プレイヤーを向いて攻撃する敵はとてもシンプルに作れます。

今回はそんな敵の作り方を紹介します。

準備

弾を発射する敵を用意しましょう。

僕の敵↓

そして発射する弾も準備しましょう。

用意した弾にRigidBodyを追加しておきましょう。

次に、弾を発射するときに敵の前に出すようにしたいので、発射地点を追加します。

まずは、空のオブジェクトを作成し、敵の子オブジェクトにします。

位置は、敵よりも少し前あたりに置きます。

次に、向く対象のプレイヤーを用意します。

はい、おなじみの青い箱ですねw

これで準備は完了です。

敵のスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShootAndLook : MonoBehaviour
{
    [SerializeField] GameObject Ball;
    [SerializeField] GameObject ChildObj;
    [SerializeField] GameObject Target;

    float ShootTimer = 0;
    float speed = 300;

    
    void Update()
    {
        Look();
        Shoot();
    }

    void Look()
    {
        transform.LookAt(Target.transform);
    }

    void Shoot()
    {
        ShootTimer += Time.deltaTime;

        if (ShootTimer >= 1)
        {
          ShootTimer = 0;
            GameObject ball = Instantiate(Ball, ChildObj.transform.position, Quaternion.identity);
            Rigidbody ballRigidbody = ball.GetComponent<Rigidbody>();
            ballRigidbody.AddForce(transform.forward * speed);
        }
    }
}

このスクリプトを敵オブジェクトにアタッチします。

そうしたら、Ball,Child Obj,Targetそれぞれに必要なオブジェクトを入れます。

Ballには、発射させる弾を入れます。

Child Objには弾の発射地点ように作った空のオブジェクトを入れます。

Targetにはプレイヤーを入れます。

これで、実行をしてみますと

スクリプトの解説

void Look()
    {
        transform.LookAt(Target.transform);
    }

Look関数では、敵の向く方向をTargetに合わせるようにしています。

 void Shoot()
    {
        ShootTimer += Time.deltaTime;

        if (ShootTimer >= 1)
        {
          ShootTimer = 0;
            GameObject ball = Instantiate(Ball, ChildObj.transform.position, Quaternion.identity);
            Rigidbody ballRigidbody = ball.GetComponent<Rigidbody>();
            ballRigidbody.AddForce(transform.forward * speed);
        }
    }

Shoot関数では、一秒経過したら弾を発射させるプログラムになっています。

Instantiateで弾をChildObjの位置から生成させるようにし、ball変数に格納します。

ballでRigidbodyを取得し、AddForceで前に力を加えるようになっています。

まとめ

これで、敵が動くようになったら面白そうですね。

参考にしたサイト↓

【Unity C#】プレーヤーの向いている方向に発射する
プレーヤーの向いている方向に発射するには、どのような仕組みを作ればいいでしょうか?今回はプレーヤーの向きからミサイル発射する方法を見ていきましょう。左右キーで回転し、スペースキーを押すと、自分が向いている方向へ撃つことができます。

コメント

タイトルとURLをコピーしました