カテゴリー: Unity

うにのトゲは刺さると痛い(´・ω・`)-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機能をつけようかと思ったが、あれはモバイル向けにコードを変更してしまったので、そのままにしよう(ノ∀`) (故に音が出るので注意)
https://mole-kingdom.com/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が名前衝突すんだかなんだかで別の名前にしないといけない模様。
<a href="https://answers.unity.com/questions/1553003/error-cs0030-cannot-convert-type-unityenginenetwor.html" rel="noopener" target="_blank">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を手直しして、アクセス出来るようにした。

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

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

ついでにhttps://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時間越してるからね(ヽ'ω`)

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

中学生漢字をちまちま登録したりしなかったり。全くインストールされないので、余りやる気が出なくて作業が進まない(ノ∀`) まあこれは自分用の暇つぶしゲームのフレームワークを構築できたということで良しとするか(´・ω・`)

とりあえずカジュアルゲームっぽいものを作ろうとサンプルやらチュートリアルなどを眺める。


ドラッグ関連

Unity : ドラッグでオブジェクトを動かす
Try Unity _8 マウスドラッグでオブジェクトの移動
Unity5でオブジェクトをドラッグする方法


加速度センサーのサンプル

アプリではなくてただのサンプルというレベルのものだった。
カメラを真上からにしたら、本当の玉転がしゲームみたいな感じ。 確かUnity社のチュートリアルにも玉転がしはあったから、そっちをやってみるか。

[Unity] 3D玉転がしアプリを作る


蟻のタッピングゲーム

ふーん(´・ω・`)くらいのもの。まぁ完全な初心者だったら多少は勉強にはなるかもくらい。自分が間違えたんだか、記述に間違いがあったんだか忘れたが、ちょっとつまづいたような。

Unityで2Dタッピングゲームを構築する方法 - WPJ


ジュエル吸い付けゲーム?

使用するジュエルのアセットの中身がなんか変わっていて、自分でプレハブを用意した。その為か、単純に間違ったのか、なんか挙動がおかしかったw とは言えLineRendererの使い方とか色々と解ったので良かったかな(・∀・)
outのことを完全に忘れていたが、参照渡しか。

チュートリアル映像の内容は英語だったけど、Youtubeの自動字幕+翻訳機能で大体は把握出来た。ただ、翻訳が無茶苦茶な部分があったり、単純に音声を拾って来たものをそのまま字幕にしてるので、間違えた時の訂正の言葉等は結構、理解の妨げになったw もっと言ってしまうと、やっている人が間違えていて、途中で訂正するのは、チュートリアル映像では駄目だろって思ったw


Creating a Casual Jewel Mining Game

Line Rendererについて
Physics.Raycast
out パラメーター修飾子 (C# リファレンス)
参照渡し
UnityのTransformのワールド空間とローカル空間について
unityのtransform.transformDirectionにつ…
【Unity】Transformコンポーネントの便利な関数まとめ


2D Roguelike tutorial

これは文句なしに色々と勉強になったわ(・∀・)
これのチュートリアル映像はトランスクリプトがついていたので、主に文章で内容を把握した(ノ∀`)

これをやるとかなりの知識を得られるので、英語のままじゃもったいないから、終わった後に日本語化してみようかと思ったが、ぐぐってみたら既にあったわ(ノ∀`)アチャー
20150525【Unity7】Unity公式チュートリアル2Dローグライクの導入【2Dローグライク1】

まあでも、"Casual Jewel Mining Game"とこれのチュートリアル映像をこなしたお陰で、これから英語チュートリアルでもやっていける自信につながったから、良しとするか(`・ω・´)


Wallのイメージが一枚足りなかったような気がしたけども、単純に見落としただけかもw

4-1でGameManagerに

        void OnLevelWasLoaded(int index)
        {
            //Add one to our level number.
            level++;
            //Call InitGame to initialize our level.
            InitGame();
        }

という部分があるが、これだとエラーになるんだったかウォーニングが表示されるので、_CompleteフォルダだかにあったGameManagerから以下の

static private void OnSceneLoaded(Scene arg0, LoadSceneMode arg1)
    {
        instance.level++;
        instance.InitGame();
    }
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static public void CallbackInitialization()
    {
        SceneManager.sceneLoaded += OnSceneLoaded;
    }

というコードを持って来て書き換えた。("using UnityEngine.SceneManagement;"も追加しないと駄目だったはず。)

最初は「2D Roguelike Upgrade Guide 5x.pdf」に書いてあったメソッドを何も確かめもせずに3つとも書いておいたらエラーになった(ノ∀`) いきなり"Day 4"で始まったりw

あと、実際に問題があるのかどうか、原因がそこにあるかどうか確かめていないが、_Completeフォルダの方を完全に削除した。上記の問題の時に何故か_CompleteフォルダのGameManagerがエラーを吐いていたので。

そう言えば、真ん中のノイズのような線はなんだろうか(´・ω・`)

UnityのVector3でよく使うものまとめ
ジェネリック


取り敢えず、しばらくは中学校漢字の追加とチュートリアルをこなしていくかな。

とか言いつつ、そんな悠長に構えていられないので、もう仕事を探さないといけないな(´・ω・`)