Unityで弾丸を生成

移動、旋回ができるようになったところで今度は弾を発射したい。
弾を発射させるためには、弾丸のオブジェクトをゲーム中に生成しなくてはならない。
オブジェクトの生成はチュートリアルになかった内容なのでちょっと調べる。

こちらの記事を参考にしました

PrefabとInstantiateの基本(2)効率的にBlockを並べる:「はじめてのUnity」のブロック崩しを改造しながら学ぶ

とにかく生成したいオブジェクトをPrefabとして登録しておき、
Instance関数の引数にPrefabを設定してやることで生成できるそうな。
Purefabの登録はチュートリアルでやったな。

というわけでテキトーにBulletオブジェクトをPrefabに登録し、
Bulletオブジェクトを生成するWeaponスクリプトを作成。

ただ出現させるだけでは銃口の位置や向きが考慮されず生成されるため、
それらを考慮する処理をてから生成。
弾を90度回転させているのは、弾のモデルの向きが縦向きなので、横向きに直しているため。

このままでは弾は生成されるも飛んでいかない為、弾に生成された瞬間に飛んでく力が加わるようにBulletスクリプトを作成。

そんなこんなでこうなりました

ええかんじ
イカしたウィンナー発射装置ってかんじ。

今は最初に力を加え、後はRigidbodyの演算に任せているが。
いずれは有効射程距離までは等速直線運動を行い、
その後失速、重力による落下をするようにしていきたい。

まぁ、多分有効射程距離まで重力なし、抵抗なしにして、
越えたら重力あり、抵抗ありにすればいいよね。

また、ミサイルを実装するならロックオンした敵の位置情報のポインターを弾に渡したいところ。生成したオブジェクトに関数を介して値を渡す方法を調べなくちゃね。

Unityでゲームパッド(コントローラ)を使う方法

パッドを入力として使う方法を試してみた。
以下のそめ先生のブログを参考にしました。
http://inter-high-blog.unity3d.jp/2017/07/04/gamepad/

インプットマネージャーによってインプットを管理しているようです。
インプットマネージャーは Edit > Project Setting > Input から開くことができます。

こやつです

デフォルトで18個のインプットが初期設定されています。
今回使用するゲームパッドの右スティック用インプットを追加します。
インプット数は Size 項目の値を変えることで変更できます。

ただインプット数を追加しただけでは”Cancel”といった名前のインプットしか追加されません。
このインプットを自分好みにカスタマイズしていきます。
画像上の”R_Horizontal”と”R_Vertical”が今回追加変更したインプットです。
主に変えた所は以下

Name:”R_Horizontal”に変更、後にこの名前を用いて値を参照します。
Dead:ここで設定した値(0.19)までの入力を殺してくれます。
これを設定しないとごくごくわずーかなスティックの傾きも検知してしまい
止まってるつもりでも微妙に動いたりしてします。
とりあえず0.19を設定しているが適正値は要検証。
Type:ゲームパッド用なんで”Joystick Axis”を設定
Axis:”3rd Axis”を設定、ゲームパッドのどの入力を使うか設定します。
私の現環境ではこの設定で右スティックの水平方向を検知してくれる。
しかし、パッドが違ったりOSが違ったりすると変わってくるらしい。
なんと厄介な、キーコンフィグを実装しないとね。

他の値の設定値についても以下のマニュアルを見れば分かる。
https://docs.unity3d.com/ja/550/Manual/class-InputManager.html

んで、早速用意した”R_Horizontal”と”R_Vertical”を以下のようにインプットとして使用。

これでインプットをfloat型にできれば後は好きにできるよね!
これで右スティック、左スティック両方を使えるようになりました。
(初期設定の状態で左スティックは使えていた)

ゲームパッドを使うとただ動かしてるだけで楽しい。
以上です。

Unityでゲームを作りたい

タイトル通りUnityでゲームを作りたい。
いや、作りたいではない。作るのだ。

そもそもこのブログもゲーム製作の備忘録目的で作成したわけだしね。
ちなみに目標はカスタマイズ性の高い3Dロボアクションゲーム。

とりあえずUnityの基本的な扱い方を学習するために、こちらのチュートリアルゲームを作成。
https://unity3d.com/jp/learn/tutorials/projects/hajiuni-jp

これだけで当たり判定、オブジェクトの動かしたかた、UIの表示、カメラ操作等の基本的な部分はなんとなんとなく分かるようになる。

そんなわけでチュートリアルを参考にゲームを作っていく。
また、チュートリアルになかった角度の変更も一緒に以下のように実装。

上記の記載方法以外にも色々とメソッドが用意されている。

Rigidbodyの回転方法は以下のエフアンダーバー様の説明を参考に
http://www.f-sp.com/entry/2017/09/06/181854

Transformでの回転方法は以下のスクリプトリファレンスを参考に
https://docs.unity3d.com/ja/550/ScriptReference/Transform.html

あ、RigidbodyとTransformの違いについてだけども
物理演算を行うオブジェクトはRigidbodyを使用し
物理演算を行わないオブジェクトはTransformのまま
でいいのかな?

なので今回はロボット本体をRigidbodyを付与したオブジェクトにし、
その子オブジェクトとして腕(銃)部分を作成した

ここで重要なのが回転や移動に用意されてるメソッドには
localxxxとxxxといった風に似たような値やメソッドが2つ用意されてたりする。

これらの違いは「親の Transform オブジェクトから見て、相対的かどうかの違い」になっている。

今回、腕(銃)を上下に向きを変える場合は本体の向きを変えずに腕だけを動かしたい。
こういった場合はlocalxxxの値が変わるようにする必要がある。
最初ややこしくて分からなかったし、何なら今もしっかりわかってないと思う。
書いてる内容が間違っていないことを祈る。

あと気をつけないといけないのは引数の型について
特に回転させるとき。
クォータニオンっていう値の4つある角度の表現方法をしたりしてくる。
間違いなく原理をしっかり理解できない。うん。

でも関数の使い方さえわかればゲームはつくれるさ!
以下が参考になりました。

UnityでRotation(Quaternion)をうまく使いたい
http://spi8823.hatenablog.com/entry/2015/05/31/025903

Unity学習帳 クラスを問わず回転操作に関係する関数
http://unitylab.wiki.fc2.com/wiki/クラスを問わず回転操作に関係する関数

とりあえずあとは
・パッドを入力として使う方法
・オブジェクトを生成する方法(弾の発射とか)
・モデルを動作させる方法
を学習していきたい。

とにかくUnityで何ができるのかを覚えなきゃね。

以上です。

Webページ作成の備忘録

はい、ねくすとです。

備忘録を作ろうと思ってブログを立ち上げた次第。

というわけでまずはブログ開設までの備忘録。

 

ブログを開設までの流れは以下

1.ドメイン取得

2.レンタルサーバーと契約

3.WordPressを使う

 

1.ドメイン取得

サイトの住所としてドメインを取得するよ。

世界でひとつだけのドメインを自分のものにするわけだからお金がかかるよ。

今回は「お名前.com」ってとこでドメインを取得。年間で1000円くらい。

けどさっそく躓いた。ドメインを取得しようと決済に進むと

カートの内容が変更されました。内容をご確認のうえ、お進みください。

と表示されてしまって先に進めない。

調べたところ「お名前.com」側のエラーみたいで時間をおくしか解決方法がないようで。

5時間程後に再度決済したら無事ドメイン取得。

とはいえこのドメインを必ずしも取得する必要はない。レンタルサーバーを借りる時点でレンタルサーバー側が用意してくれたドメインを使用することも可能。

とはいえその場合はレンタルサーバーの引っ越しは難しくなると思うから無難にドメイン取得ほうがいいよね。愛着沸きそうだし。

 

2.レンタルサーバーと契約

契約するレンタルサーバーによって月々の値段がだいぶ変わる。

「xサーバー」がオススメによくあがっていたけど月々900~。高杉。

初心者にはここまで良いところじゃなくても十分だと思う。

そうなると「ロリポップ」か「スターサーバー」が選択肢にあがってくる。

両方月々250円のライトプラン?だかがある。

一体何が違うの?って調べたら、

・ロリポップは転送データ量の上限がスターサーバーの10倍近い

・スターサーバーはSSDを利用していたりとサーバーの設備自体が高スペック

ってところが大きな違いみたい。

ロリポップって名前が前衛的だったのでロリポップでサーバーを借りることに。

借りたらお名前.comで取得したドメインをロリポップ側で独自ドメインとして設定。

そしたら今度はお名前.com側でロリポップサーバーで使うよってのを教えるためにDNSサーバー設定を行う。

これでなんかよく分からん準備は完了。ロリポップのサイトにて、細かい手順を説明してくれてるからそれに従えば多分なんとかなる。とはいえもっと勉強しなきゃね。

 

3.WordPressを使う

WordPressを使うためにレンタルサーバーの中にWordPressをインストールする。

これもロリポップのサイトからできる。

あとはWordPressを介して自分のサイトをいじったり記事を投稿できるようになる。

たった今WordPressで記事を書いているところだけども。

投稿 > 新規追加

ででてきた画面に文字を入力してるだけ。

もっとかっちょいい感じにサイト全体をいじるのはまだ先になるかな。

 

以上。