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 を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

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

UnityでVRガンシューティングを作成します スマホのジャイロセンサーを利用して、ゴーグルを下に向けたら歩く、上に向けたら弾を発射するようにします 今回やること UnityRemoteのダウンロード …

no image

Unityの便利機能を使いこなそう #4 NavmeshAgentで敵のAIをつくろう

敵がついてくる範囲の設定 NavMeshAgentの追加と設定 敵が主人公を追いかけるスクリプトの作成

スクリプトを作成したら… スク …

no image

EffecSeerを使ってゲーム用のエフェクト作りに挑戦

さて、EffecSeerというソフトを使ってゲーム用のエフェクト作りに取り組みました このソフト、数値をいじったり、テクスチャを貼り付けたり、更には3Dモデルを読み込んだりと色んな技を使ってエフェクト …

Unityの便利機能を使いこなそう #2 CharacterControllerでプレイヤーの移動とジャンプを実装しよう(マリオ風、バイオハザード風、フォートナイト風色々あるよ)

CharacterControllerの説明 さて、今回はCharacterControllerというものを使って、プレイヤーの移動とジャンプを実装していきたいと思います CharacterContr …

no image

攻撃判定

①当たり判定を出したいキャラクターにスクリプトを取り付ける ②取り付けたスクリプトのobjに出現させたい当たり判定をドラッグ&#038 …

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

  • 16458総閲覧数:
  • 81今日の閲覧数:
  • 10201総訪問者数:
  • 53今日の訪問者数:

住所
Tokyo,Japan

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

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

getabakosensei@gmail.com