カテゴリー: Unity

うにのトゲは刺さると痛い(´・ω・`)-30

Survival Shooter tutorialをやった

このチュートリアルは、なんかのイベントの時のハンズオンか何かのものらしく、その時に撮影した会場の映像を編集したようなチュートリアル映像だった。

そういった絡みからか今までやったチュートリアルよりも、完成度の高いプリメイドのアセットを利用して進んでいく感じが強かった。


LineRendererの線の太さ

チュートリアルで使用しているUnityのバージョンは4.6なので、最新版とはUIが異なっていた(´・ω・`) ”parameters”だかがなくて、線の太さを変える方法が解らんヽ(`Д´)ノと思ったが、グラフみたいなところのwidthを変えれば良かった模様。


RayCast

ジュエルマイニングチュートリアルの時に出てきていたが、余りきちんとした理解をしていなかった(ノ∀`) 

参考ページを読んで、前よりかは理解した(`・ω・´)
Rayクラスが始点と方向を内包するクラスなのね。

参考:
Unityのレイキャストとは何ぞや?(自分用)
Physics.Raycast
Camera.ScreenPointToRay


Color.Lerp()

英語の説明だとよく解らなかったのでぐぐる。

たとえば、点滅するインジケータなど、2つのカラー値を補間して表示したい場合に便利なのが、Color.Lerp()。
(Colorの補間)

ということらしい。


NavMesh

“Learn”で出てきた時は、ふ~ん( ゜σ・゚)ホジホジって感じで流したけど、なるほどこういうシステムなのか。

ベイクって「ブリティッシュ ベイクオフ」かよ(・∀・)って思ったが、確かにジオメトリからナビゲーションマップを生成する感じはケーキの外側をオーブンで焼くのに似ているかもしれない。

第26回_プレゼン資料_菅原(Unityはじめるよ~NavMesh基礎~)


ZombearとHellephant

ハンズオン用チュートリアルであった為か、内容は聞き取れないながらも特に問題もなく先へ進むことが出来た。

が、「9.Spawning Enemies」で一瞬悩む(´・ω・`)

チュートリアル映像ではPrefabsフォルダにZombearとHellephantのプレハブが存在するのだが、実際には存在しない。もしかすると編集で切られているだけで、ハンズオンではモデルからプレハブを作る作業をやっていたのだろうか?

何はともあれ、

In the tutorial, Zombear and Hellefant are provided in the Models folder, but the package that I downloaded from the Asset Store did not have them. Therefore, I went to the _Complete-Game folder and copied these assets to my project.

(Survival Shooter Zombear and Hellephant not moving )

ということらしい。
[_Complete-Game]-[Prefabs]のZombearとHellephantのプレハブを持って来いというお話らしい。まあ、そのままの場所でも使えるとは思うけど。

で、まぁ、これで出現をするようになったのだけれども、今度は動かない。つまり上のリンクの元々の質問内容につながり、

if you find yourself with this problem, simply go to the ZomBear and Hellefant prefabs, delete the three enemy scripts (Enemy Movement, Enemy Health, Enemy Attack) and replace with the script that you have developed while following the tutorial.

と、プレハブについてる3つのスクリプトを削除し、チュートリアルで使ったスクリプトに差し替えるとあら不思議(・∀・)ウゴイタ

WebGLにしようかなと思ったが、うちの環境ではなんか上手く行かなかった(´・ω・`)
Bakeが終わらないし、よく解らないNullReferenceかなんかのエラーが発生しいてたのでやめた。

このチュートリアルの注釈エントリも幾つか見かけたけど、アセットのバージョン(?)が違うのか、ZombearとHellephantの問題は起きていない感じだったかな。


2D UFO tutorial

これはただのRoll-a-ball tutorial(玉転がし)の2D版だった(ノ∀`)

初歩の初歩、音楽もリスタートも付け加えない。
玉転がしチュートリアルと同じ構成かな。
まああっちをやってからこっちをやると、RigidbodyとRigidbody2Dとでは微妙に設定項目(KinematicとGravity)が違うことが判るようになるので、続けてやってもいいかもしれない。退屈かもしれないが、同じようことを繰り返しやると忘れにくくなるし。

そう言えば、アイテムの収集のところのOnTriggerEnter2Dメソッドのところで

if (other.gameObject.CompareTag("PickUp"))

が抜けていたり、その次のページでは上記のif文はあるけど{}で囲まれてなかったような。まあこのチュートリアル内だったらこれでも動くのかな?

トランスクリプトはなかったけど、喋りもゆっくりでNormalのままでいけたような気がする。はまったってレベルじゃないけれども、Pickupを一つ多くデュプリケイトし、かつ位置を動かしていなかった為に、12個回収して、”You win!”の表示が出ていても、まだ一つPickupが残るという事態が発生した(ノ∀`)


次はタンクでもやってみますかヽ( ・∀・)ノ

うにのトゲは刺さると痛い(´・ω・`)-29

2Dシューティング チュートリアルをやった

日本語のチュートリアルだったので比較的楽に出来たが、微妙にはまったり(ノ∀`)

うちの環境のせいか、拡大表示しているのがいけないのか、なんかちょっと読みにくいレイアウトだった。途中でジェネリックのType部分(?)のBulletが抜けていたり、画像がなかったり、画像が違っていたり、HTMLエンコードがおかしかったりしたが、それほど致命的ではなかった。

ただ、Animatorのところで何かを間違えてしまい、ここで初めてこのチュートリアルについての注釈をぐぐる。

[UNITY][TECH]Unity 5で 2Dシューティングのチュートリアルを行う際の注意点(第11回)がちょうどその部分の注釈だったので、これに従い、やり直す。何が間違いだったのかよく解らなかったが上手くいったので良しとするw なんかAnimation ClipのFrameの長さかなんかがおかしかったような気がする。

設定を間違えて、お尻から弾を出しちゃう敵。ヽ( ・∀・)ノ● ではない。

Trigger Colliderにしていなかった為に、反発する弾達。これはこれで面白いと思ったw

チュートリアルの設定通りに作ると、ノーミスでクリアなんて絶対無理なので注意w


これはSpaceShooterと異なり、2Dゲームだったのでこれはこれで勉強になった。
ちなみにこのサンプルはWave(敵のセット)を5つ作って、延々とWave1~5をループする。プレイヤー機が破壊された後もリセットはされず、その状態から継続となる。

前回同様に鯖に上げてみたが上手く動かない(´・ω・`)
ページは表示されるものも、Unityの画面が出て来ない。
あれ(´・ω・`)?って思ってぐぐる。

Unity5.3で、WebGL版がローカルでは動くのにサーバーにアップすると動かない
ああ、.htaccessの絡みかと思い、修正してapache2を再起動するも上手く行かず。

RewriteCondの書き方が悪かったのかもしれないが、途中で
Unity:ビルドしたWebGLシーンをWordPressのブログに埋め込む方法について
というエントリを発見し、埋め込むことにする。それだったらルートじゃなくてもいいなと思い、wordpress用のディレクトリ以下に置くことにする。これなら.htaccessで転送されないし。


無事にiframeで埋め込めて、動いたのは良かったが、これだと開いた途端に音が鳴るのでうるさい(´・ω・`)
ということでON/OFF方法をぐぐる。自分で一から書いてもいいけれども、早く次のチュートリアルをこなしたいという気持ちもあるので(ノ∀`)

Unity:BGMと効果音をつける~公式チュートリアル 2Dシューティングに挑戦というエントリを発見。しばらく気が付かなかったが、上のエントリと同じブログのものであった(ノ∀`) 

タイトルにある通り、こちらも2Dシューティングチュートリアルの注釈と改良をしているエントリ群であった。自機にHPを追加したり、敵機の色を変更したりしているので、これからこのチュートリアルをやる人はUnity公式のページを見るより、こっちの方を覗いた方がいいかもしれない。

“サウンドのオン/オブの切り換え” ヽ(`Д´)ノ ←望まずして人の誤変換を見つけてしまう人。尚、自分の誤変換等にはほとんど気が付かないw

一応これでON/OFFが可能になった模様。Audio Mixer等についてはいずれまた勉強しないとね(´・ω・`)



SpaceShooterチュートリアルを最後までやった(敵が出現する)バージョンもサウンドのON/OFF機能をつけようかと思ったが、あれはモバイル向けにコードを変更してしまったので、そのままにしよう(ノ∀`) (故に音が出るので注意)
http://35.247.82.29/wpbl/unity_webgl/SpaceShooterTutorial_ex/index.html


次はSurvival Shooter Tutorialでもやるか(´・ω・`)

うにのトゲは刺さると痛い(´・ω・`)-28

Space Shooter tutorialの続きをやった(ヽ’ω`)

取り敢えず、2時間オーバーであることが判明済みの「4. Extending Space Shooter」の「Extending Space Shooter: Enemies, More Hazards, Scrolling BG…」のチュートリアル動画を観始める。

このチュートリアル動画にトランスクリプトがついていないことは承知していたが、それに加えてこの動画、

youtubeの字幕も出ねぇ…(ヽ’ω`)

つい最近になって(というかUnity絡みを触り始めて)、ようやく英語チュートリアル動画を観始め、「すげぇ、youtubeの字幕+自動翻訳!これがあれば勝つる(`・ω・´)!!」と感動し、英語チュートリアル動画の世界へと足を踏み入れた俺氏であったが、どうもこれは動画配信者の設定で表示の有無が決まるらしい…_| ̄|○

というわけで2時間の英語チュートリアル動画を全部観た……再生速度を0.75にしても、ほとんど聞き取れなかったので眺めたと言った方が正しいのかもしれない…(ヽ’ω`)


内容としては、

  • アステロイドを三種類にする。
  • 背景にパーティクルを追加して、背景画像自体もスクロールするようにする。
  • エネミーオブジェクトを追加して、弾を出させたり、動きに変化をつけたり。

と言った感じ。

これは、というか前の章とかもそうだったようだけども、ライブでチュートリアル動画を配信して、チャットで質問を受ける形でやっていたようで、その質問の答えかなんかで、3wayショットの実装方法やボス戦前の移動演出(ワープみたいな感じな表示とか)等も説明していたような。

ReverseDirecton()だかは何を説明していたのかよく解らなかった。 敵が移動途中で反転するようになるのかなと思ったが、単純に上方向に流れるだけだったかな……違う、Quaternionを上手く代入出来なかったから諦めたんだった(ノ∀`)

今回も違うスクリプトだったかプレハブ(Done_~)等をアタッチしてしまったりして、ちょっとだけハマった(ノ∀`)

ちなみにぐぐってみたら、ここまでの概要を書き起こしたエントリがあった。

[Unity公式チュートリアル] 「Space Shooter」の概要紹介


その続きの方もやった

Mobile Development: Converting Space Shooter to Mobile」の方も観た。

これはタイトルから判る通り、モバイル対応の章。これも一時間半くらいあった…(ヽ’ω`) iPhone(iOS?)向けの説明ではあったが、大した違いはない。というかこの辺は飛ばした(・∀・) Android端末で実行したことがある人なら特に問題ない。

こちらもほとんどの内容は聞き取れなかったが、最終型のコードとその途中の作業を眺めて、なんとなく解った……ような気がしないでもない(´・ω・`)

内容としては、

  • 加速度センサーでの移動。(PlayerContoller)
  • 配置したUIのimageを使った移動。(SimpleTouchPad)
  • 配置したUIのimageを使った弾の発射。(SimpleTouchAreaButton)
  • GUIテキストからTextへの変更。
  • Restartボタンの追加とRキー等の挙動の無効化。

と言った感じ。

最後の方でCanvasの設定(Canvas Scaler)も変更していたけど、これは固定画面系なら、普通にやることだな。

細い数値は間違ってるかもしれないが、UIイメージはこんな感じだった。
MovementZone

FireZone


ちなみにDone_PlayerControllerに書かれているコードは、WebGL用の操作コード、加速度センサーによる操作コードがコメントアウトされた状態で存在し、タッチパッドによる操作コードがカレントになっている。

ということで、加速度センサーによる操作コードを確かめる時は、この部分をカレントにし、タッチパッドによる操作コードをコメントアウトしなければならない。

またSimpleTouchPadのGetDirection()メソッドは先にインスペクターでsmoothingの値を設定するか、”return direction;”とでもしておかないと動かないw 当たり前だが、ちょっとだけはまった(ノ∀`)


SceneManager.GetActiveScene ().name

“Application.LoadLevel (Application.LoadedLevel);”のウォーニングを消そうとして、”SceneManager.LoadScene (“Main”);”みたいに直接Scene名を指定していたが、正しく直すのであれば、

SceneManager.LoadScene (SceneManager.GetActiveScene ().name );

なのね(・∀・)

参考:
Unityの勉強:Space Shooter 15/16記事をクリップする


Unity Remote

Unity Remoteって実機の方に入れて、Unityエディタの設定を変えるだけでいいのね(・∀・)カンタン
まあでもPCの性能が悪いせいか、あんまり意味がないなと思ったり思わなかったり(´・ω・`)
単純に加速度センサー等が動いているかどうかを確かめるために使う分にはいいけれども。

参考:
【Unity】「Unity Remote 5」の使い方


今回思ったことは、トランスクリプトの無い動画や自動字幕機能をオフにしているチュートリアル動画は利用価値が低い。

もっと言ってしまえば、目次的なものや章分割を備えていない動画というものは資料としては価値(存在意義)が低い。

動画であることに意味がある内容であるのであれば、それはまだいいけれども、プログラミングのチュートリアル動画は必ずしもそうではないと思う。(ゲームプログラミングだと実行時の画面表示等に有用ではあるが、それは必ずしも連続した長い動画の一部である必要はなく、従来の結果画像同様に、文章の後に分割された動画を観ることが出来ればいいだけである。)

勿論、受動系学習タイプと能動系学習タイプの人とではその評価が異なってくるであろうが、後者である俺氏には内包する情報が分類されていない動画で学習するのはかなりきつい(ヽ’ω`)

もう少し、こう、知識の伝達を考慮した動画フォーマットはないのだろうか(´・ω・`) いずれにしても作り手が努力しないと駄目か。


まあ何はともあれ、終わった…次行こう、次……(ヽ’ω`)

うにのトゲは刺さると痛い(´・ω・`)-27

引き続き、チュートリアルをやる。


Learn

Learnの1~4をやった。これは一番最初にユーザーがやるべき初歩の初歩のチュートリアルだった(ノ∀`) ということで特に言うこともなく。短いから翻訳でもしようかと思ったが、ぐぐってみたら既にあったのでやめたw

【補足解説付き】Unity公式チュートリアル日本語翻訳【Basic Tutorials – 01: Play & Edit mode】


Roll-a-ball Tutorial

んー、特に言うことはないかな。
シンプルでわかりやすいチュートリアルではあった。

VSで作業しているにも関わらず、チュートリアルの説明通りに、クラス名を選択してctrl+「’」でリファレンスページが開けんなぁと悩んだりはしたが(ノ∀`) (MonoDevelopだけの機能?)

途中までやって、日本語訳されていて、更には障害物まで追加するUnityの基本機能のみでゲームを作成し、Unityの使い方を学びましょう(初級)というエントリを発見したが、今さらジロー状態だったので、そのまま英語チュートリアルを完走した(ノ∀`) ちなみに上記のブログでも【補足解説付き】Unity公式チュートリアル日本語翻訳【Roll-a-ball tutorial – 1. Setting up the Game】という日本語訳エントリ群があった。

この前試した加速度センサーのサンプルとニコイチにして、スマホで動くようにしてみようか。

ちなみにLearnタブのTutorialから選んでやったのだが、途中でUnityが異常終了してしまった。もう一度Unityを起動し直してチュートリアルの続きをやろうとしたら、最初からになった(´・ω・`)

畜生ヽ(`Д´)ノと思ったが、”C:\Users\[username]\AppData\Local\Temp\[***]\Assets\”だったかその辺りにunityファイルを発見して、それを起動したら、続きから出来た(・∀・)
まあでも普通にプロジェクト作成して、Assetストアからチュートリアルを落として来た方がいいかもしれないと思った。

sceneビューを見てるとビリヤードとか作れそうな気がしてくるな


Space Shooter tutorial

本当はもっと短いやつをやろうと思っていたが、Learnタブの「Tutorial Project」で”Roll-a-ball”の下だったので、つい選択してしまった(ノ∀`)

今の所、「3. Scoring, Finishing and building the game」まで終えた。

どうも、同梱されている`UnityEngine.Networking.PlayerController’とチュートリアル内で作るPlayerControllerが名前衝突すんだかなんだかで別の名前にしないといけない模様。
Error CS0030 Cannot convert type `UnityEngine.Networking.PlayerController’ to `PlayerController123′,CS0030: Space Shooter Tutorial

“PlayerController_a”みたいな名前にして、今回もCompleteフォルダは削除した。もしかすると名前空間を使えば良かったのかもしれないが、調べるのが面倒くさかったので(ノ∀`)
「同じNameSpaceで、同じクラス名の、異なるクラス」は実在した! – テラシュールブログ


このチュートリアルは古いバージョン向けなので、RigidbodyをGetComponentするかPublic+インスペクターでD&Dしないといけなかったり、Lightへのアクセスが違ったり、シェーダー絡みが違ったり、”convex”がどうたらこうたらと色々と面倒だった。(チュートリアル映像で修正情報は出たけれども)






GUI Textはまだ使えるようだったけれども、Textの方に慣れているのでTextに変更した。【Unity 2017.2】GUI Textは非推奨になりました


TextureやMaterialを余り触って来なかったので、「なるほど、こういう風にやるのかぁ(・∀・)」と色々と勉強になったが、「なんでGameObjectを作った時にデフォルトでPositionをResetした状態にしてくれないんだろうか(´・ω・`)」とか「New ScriptでアタッチしたcsファイルがAssetのトップレベルに保存されちゃうの(´・ω・`)?」的疑問を持ち始めた。

後者の方は、Assetフォルダ内に各リソース向けのフォルダを自動作成して、拡張子によってそこに自動的に突っ込んでくれるモードがあってもいいのではなかろうかと思ったがどうだろうか。企業等で大規模開発する場合はそんな単純なフォルダ分けはしないだろうけど、個人ならそれで十分だし、それだけでも作業効率が変わってくるんじゃないのかしら(´・ω・`)? まぁ無料バージョンにそんな機能を追加してくれることはないだろうけれどもw


そういえば今回はやけに改行コードが混じってるってウォーニングが出た。なぜだ(´・ω・`)
Unityと改行コード

今回はWebGL(チュートリアル映像ではWebPlayerだったな、そういや)だったので、鯖に上げて試してみることにしたが、適当に転送を設定したが為に弾かれ続ける(ノ∀`)

.htaccessを手直しして、アクセス出来るようにした。

http://mole-kingdom.com/SpaceShooterTutorial/index.html(音楽流れるから注意ヽ(`Д´)ノ)

参考:
Mod_Rewriteを使って、リダイレクト設定する手順をまとめてみた
.htaccessを使ったよく使うリダイレクトまとめ

ついでにhttp://mole-kingdom.com/index.htmlにもアクセス出来るようにして、そこにMole’s Match-upの説明ページを移す。css等をきちんとしていないので、色々と酷いことになっているが、取り敢えずこれで良しとする(ノ∀`)

Mole’s Match-upもWebGLで公開出来るかなと試そうとしたが、何故かビルドされず、エラーも出力されないので、取り敢えずやめておいた(´・ω・`)


ちなみにこちらのチュートリアルは3Dなので内容は多少異なるようだが、「はじめてのUnity」に日本語で説明されている2Dシューティングのチュートリアルがある。こっちが終わったら、そっちもやろうかなと考えているが、拡張部分である「4. Extending Space Shooter」が長そうなので、しばらくは無理だな(´・ω・`)

だって「4. Extending Space Shooter」のチュートリアル映像の長さが

2時間越してるからね(ヽ’ω`)