Unity

Unityで3Dシューティングアクションを作ろう②

投稿日:2019年6月4日 更新日:

今回やること

  • 弾を発射する

弾を発射する

Playerスクリプトに追記していきます。該当する場所に追記していきます。
コルーチンが出てくるので追記する位置に注意しましょう。
※最後に全部を追記したスクリプトも載せるのでご安心を♪

変数を宣言する部分の追記内容

変数を宣言する部分の説明

public GameObject bullet;

飛ばす弾が何なのかを定義しています。
publicのGameObjectとすることで、後々その物をD&Dで
直接指定できるようになります。

public Transform muzzle;

飛ばす弾の発射位置を定義しています。
こちらもpublicにしておくことでD&Dで
発射位置の座標を指定することが出来ます。
先程、プレイヤーの前方に設置したCubeがそれに該当します。

public float speed = 1000;

飛ばす弾のスピードを定義しています。
今回は1000に設定しています。

void FixedUpdateの追記内容

void FixedUpdateの説明

if (Input.GetMouseButtonDown(0))

マウスが左クリックされたら
マウスのボタン入力については[こちら](https://high-programmer.com/2017/11/14/unity-script-mouse-click/)の方がまとめてくれているので参考にしてみて下さい♪

StartCoroutine(“shot”);

shotコルーチンを開始する
後に定義するshotコルーチンを開始します。
コルーチンは一度開始したら最後まで実行されます。
実行の仕方は
StartCoroutine(”コルーチンの名前”);
です。

shotコルーチンの内容

shotコルーチンの説明

IEnumerator shot()

コルーチンを定義する時に使います
定義の仕方は
IEnumerator コルーチンの名前()
で始めて{}ではさみます。

animator.SetBool(“Attack”, true);

AnimatorControllerのAttack変数をtrueにしています。

yield return new WaitForSeconds(0.5f);

0.5秒待ちます。
攻撃のアニメーションと弾の出るタイミングを合わせるために待ち時間を入れています。

Vector3 force;

飛ばす弾に加える力を定義しています。
なんでここで変数の定義をしているのかと言うと、コルーチンの中で使う変数はコルーチンの中で
宣言しないと動かないからです。

GameObject bullets = GameObject.Instantiate(bullet) as GameObject;

弾はbulletに指定したオブジェクトを複製して飛ばすのですが、その複製したbulletを
bulletsとして定義しています。
このように指定し直さないと複製されたbulletにshotコルーチンで行っている命令が反映されません。

bullets.transform.position = muzzle.position;

bulletsを指定したmuzzleの場所に出現させます。

force = this.gameObject.transform.forward * speed;

forceにプレイヤーの前方への力 × speedの値を代入します。
これにより弾を前方に飛ばしています。

bullets.GetComponent().AddForce(force);

bulletsのRigidBodyを取得し、それに力を加えると指定しています。
RigidBodyとは重力や衝突判定に関係したコンポーネントのことで衝突判定を起こす場合や、
重力処理を行いたい場合につけます。
弾を飛ばす場合には弾の重力に力を加えて飛ばす動きを作っているので取得しておく必要があります。

animator.SetBool(“Attack”, false);

Attackをfalseにします。

Destroy(bullets.gameObject,2);

bulletsを2秒後に消します。
Destroyはオブジェクトを消去する命令で
Destroy(消したいオブジェクトの名前.gameObject,消したい秒数);
で指定したオブジェクトを消すことが出来ます。

完成形のスクリプト

追記内容は※3と表示しています。

テストプレイをしてみると…


攻撃のアニメーションになって弾が飛んでいます。

続きはこちら

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

Unity2018のArgumentException: Value does not fall within the expected rangeへの対処法

さて、Unityで2018にアップデートすると、 ArgumentException: Value does not fall within the expected rangeというエラーがずっと出 …

no image

Unityで3Dシューティングアクションを作ろう③

今回やること 敵キャラの作成 敵の攻撃 敵がプレイヤーに向かってくるようにする 敵のダメージ処理 敵キャラの作成 敵の攻撃 Enemyスクリプトには一番上のusing~の部分にも記入します。 usin …

小学生でもわかるUnity講座

このページでは小学生でもわかるを目指してUnityの解説を行っています 分からなかった場合、遠慮なくこちらに連絡ください♪ 目次 Unity基本操作 Unityチュートリアル Scratch → Un …

Unityでスマホ対応のVRを作ろう

今回やること VR空間の宝島を冒険して宝を探すゲームをUnityで作ります バージョンは2018でやっていますが恐らく他のバージョンでも問題ないと思います VR用のカメラを入れる UnityRemot …

no image

UnityでVRガンシューティングを作ろう

UnityでVRガンシューティングを作成します スマホのジャイロセンサーを利用して、ゴーグルを下に向けたら歩く、上に向けたら弾を発射するようにします Unityのヴァージョンは2018.3.5f1で作 …

ゲタバコ倶楽部へようこそ

  • 24280総閲覧数:
  • 48今日の閲覧数:
  • 14828総訪問者数:
  • 34今日の訪問者数:

住所
Tokyo,Japan

営業時間
月火: 終日
水~金: 10:00 AM – 10:00 PM

このページはゲタバコ先生の日々思うことや活動を発信するページです
仕事の依頼、メッセージ等お気軽にご連絡ください

getabakosensei@gmail.com