カテゴリー: Unity

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

まだまだだらだらとスワイプで悩む(´・ω・`)

2本指スワイプでカメラを並行移動する処理を実装する(スマホ向け)のエントリで紹介されているコードを試す。今自分が欲しいのは、このパターンの拡張したものかなぁと思い始める。

そう言えば、

        if (Input.touchCount >= 2)
        {
            subscript = 1;
        }
        else
        {
            subscript = 0;
        }

        if(Input.touchCount >= 1)
        {
            Debug.Log("touchCount: " + Input.touchCount);

            if (Input.GetTouch(subscript).phase == TouchPhase.Began)
            {
                beforePoint[0] = Input.GetTouch(0).position;
                beforePoint[1] = Input.GetTouch(subscript).position;
            }

みたいな感じにしておかないとInput.GetTouch(1)でエラーになった。
コードの書き方が変なのは気にしない(・3・) C# newbie
つーか自分で使うのは2本指でのスワイプは必要ないから、二点目の格納部分をごっそり削ってもいいのかもしれない。

これをMathf.Clampで制限して、あと移動速度を変えようか…

でもこれだとEditorでテスト出来ないから、
UnityでiOS/Android/Editorの共通タッチ処理を実装するかその改変版の「UnityでiOS/Android/Editorの共通タッチ処理を実装する」にdeltaを取れるように追加してみたで紹介されているようなコードにしてみるべきか。前者の方はAssetになっている模様だけど、触ってない(ノ∀`)

他にも、【Unity】【C#】スワイプ(フリック)を判定、方向を取得してコールバックする というエントリで紹介されているコードを試してみた。これも無事に動くことを確認した。(まぁ以下のように適当に書いたscriptファイルを追加して、その中のOnSwipeメソッド内で引数をDebug.Logさせただけだけどw)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class testOnswipe : MonoBehaviour {
    public void Onswipe(Vector2 swipeDir) {

        if(swipeDir == Vector2.up)
        {
            Debug.Log("swipeDir: up" + swipeDir);
        }

        if (swipeDir == Vector2.right)
        {
            Debug.Log("swipeDir: right" + swipeDir);
        }

        if (swipeDir == Vector2.left)
        {
            Debug.Log("swipeDir: left" + swipeDir);
        }

        if (swipeDir == Vector2.down)
        {
            Debug.Log("swipeDir: down" + swipeDir);
        }
    }
}

このコードはUnityEventとかc#のdelegateとか色々と新しい概念が絡んで来て、理解するのに苦労した(ヽ’ω`) このエントリ内でもリンクされていた、【Unity】【C#】UnityEvent, Action, delegate, interface でのコールバック実装方法とインスペクタでの登録 やら他のサイトを眺めたりして何となく納得する(´・ω・`)リカイハシテナイ


これはこれで勉強にはなったが、やはり最初の方の路線で行こうかな。つーか別に今一番大事なところではなかったな、スワイプスクロール(ノ∀`)w

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

なんかビルドができなくなった(´・ω・`)

またどうでも良いことではまった(ヽ’ω`)

カメラの移動をスワイプ等々で行うサンプルコードを試していた時に、実機で挙動を確かめようとしたら、以下のようなエラーを吐いてビルドに失敗した(´・ω・`)

CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct.
C:/android_sdk\tools\bin\avdmanager.bat list target -c
——————————————–
CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct.
C:/android_sdk\tools\bin\avdmanager.bat list target -c
——————————————–
Build completed with a result of ‘Failed’
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
——————————————–
UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors
at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x0020e] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:181
at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00065] in C:\buildslave\unity\build\Editor\Mono\BuildPlayerWindowBuildMethods.cs:88
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

色々調べた結果、よく解らないがUnityとAndroid SDKツールのバージョンの整合性が取れてないとかそういうことみたい。UnityのSDKの参照先を”C:\Program Files (x86)\Android\android-sdk\build-tools”にしたら通るようになった。ここには”25.0.3″だけが入っていた。いつ入れたものだろう? Android Studioを入れた時に自動的にインストールされたんだろうか? まあ何はともあれ、25辺りのSDKのセットをダウンロードしてきて指定すればええんかのぅ(・∀・)?


俺氏、全くもってUnityのしきたりに馴染めず(´・ω・`)

神経衰弱だから、一画面でスクロールしなくてもいいかなぁと思っていたけれども、その拡張やらカードサイズを大きくした時の為にスクロールのやり方を勉強しとこうと思い、また色々はまる(ヽ’ω`)

[Unity] Rigidbodyを使わずにオブジェクトをフリックするというこちらのページをベースに、

092 カメラの移動範囲を制限する
【Unity勇者の奮闘記】Mathf.Clampを使いこなす
【Unity】オブジェクトの移動範囲を制限するMathf.Clampの使い方
といったページの内容を参考に

ドラッグ移動のところと慣性移動のところのtransform.position代入行の次行にそれぞれ

transform.position = new Vector3(Mathf.Clamp(transform.position.x, 0f,7f),
                Mathf.Clamp(transform.position.y,-10f,0f), 

というのをぶちこんだら、なんちゃってスクロールは出来るようになった(´・ω・`)

ただちょっと、移動速度や制限値に達した後の動きが気になるのでそこら辺は修正しないと駄目かな。(まだVector3とかVelocityとかよく判ってない(´・ω・`))

まあ、神経衰弱とかならこんな感じでもいいのかな。
だんだん、物理演算とか必要のないトランプゲームでちょっと凝ったことをやるなら、Unityを使わずに自分でJavaで書いた方がいいんじゃないかと思わなくもないけど、Android Studioの使い方を覚えるのがめんどくさいのでこのまま行くしかないか…( ;・´ω・`)ゴクリッ

Unityの寺子屋 定番スマホゲーム開発入門 Kindle版 いたのくまんぼう/大槻有一郎

50%セールの時に¥1,350 でこうたった(`・ω・´)
UnityではじめるC# 基礎編の第二弾らしい。


結論から言うと、良い内容だったと思いました(・∀・) (小並感)

今回は続編ということでC#の説明部分はないのだけれども、本書購入者の為に「UnityではじめるC# 基礎編」のChapter2~3を改変したC#の解説文書PDFを配布してるみたい。俺氏は前作を読んだ直後だったので、これには目を通さなかった。まあでも指示に従って操作をしていけば出来上がるタイプの内容なので前作を読んでいなくても進められないことはないかなぁ?

本書のChapter1は前作と似たようなチュートリアルだったので、軽く流して読んだ。
Chapter2~4は時間経過と共に発生するオーブをスワイプして集めてお寺を大きくするゲームと木魚をクリックするとオーブがお寺に飛んでいくゲームの作り方。後者はDOTweenとか言うUnityのアセットストアで公開されているアセットを使ってオブジェクトの位置を移動させながらアニメーションさせる方法の説明が肝かな。

Chapter5~6はサイドビューアクション、まあスーパーマリオブラザーズライクなゲームの作り方。スクロールに関しては1ページのコラムに書かれてるだけって感じか。まあ、最初から大きいマップを用意して、カメラ(表示画面)をプレイヤーキャラに追随する形にして実現すればいいらしい。

Chapter7はスマホアプリゲームのトレンドと収益を売るためのエトセトラ等々。

完全に右も左も判らないレベルだと難しいかもしれないが、最低ラインのコンピュータ関連の知識があり、Google先生に聞くことが出来る人ならば、きっと最後まで読み進めることは出来ると思う。ただ、多少の説明はあるものの、Unityの体系的な知識はあんまり得られないと思うので、そういうのを求める人向きではない。取り敢えず”習うより慣れろ”的にチュートリアルに従って、完成時に小さな成功体験を得て、更に先へ進むのが合っている人向きだと思った。


サンプルデータと正誤情報は
Unityの寺子屋 定番スマホゲーム開発入門 正誤情報

…のはずなんだけども、なんかおかしい(´・ω・`)
この本を読む前に行った時は正誤情報がなくてUnityTera.zipがあったような気がするんだけども、今回行ってみたら正誤情報があって、データがないような……
違うページを見てたのかな…?

致命的な問題はなかったかな。今回も細かいどうでも良い隅つつきを。正誤情報に載っているのは除く。つーかP203のやつ以外、気が付かなかったw あと単純に俺氏が勘違いしてる部分もあるかもしれないw

  • P44 図2-23で、[pos.y]の値が本文・設定値では”250″なのに、吹き出しでは”-250”になっている。本文や画像の方が正しい。
  • P62 “RefreshTextメソッドを追加”は”RefreshScoreTextメソッドを追加”
  • P70 間違い、誤植等ではないが、構造体がいきなり出て来て、最初はクラスかと思った(´・ω・`)チョットチガウノネ
  • P79 コード2-13 なんか下の”imageTemple”の行の文字間かなんかが上と違う気がする。これは二行に渡っているから?
  • P244 図5-123 吹き出しでは”天地中央に設定”とあるが、画像では”天地中央”じゃないような気がするんだけども、上寄せ?が”天地中央”?
  • P258-259 キーフレームのところで、P258の本文では”0.15″と”0.3″だが、P259では”0.1″と”0.2″になっている?
  • P262 “地面に設定”は”地面に接地”?
  • P271 流れ的に記載されていなくて当然だったが、PlayerオブジェクトにAudioSourceを追加をし忘れてエラーになった(ノ∀`)

くらいだったかな。

P179のBlockのコピーは縦に3つ、コピー&ペーストして、pos.xの値に0.8を足していく方が楽だったかな。stage2のマップの時は横一列のオブジェクト群をコピー&ペーストしてpos.yの値に0.8*マス数を足した。もっと楽な方法ないのだろうか(´・ω・`)

P262でExitが見えない時の対処方法が書いてあったのを見落とし、どうするうんだべ(´・ω・`)?と悩んだ挙句に違う方法でExitを表示させた(ノ∀`)
なんか目のアイコンで表示領域が切り替わるみたいだった。


なんか作ってみようかなぁという気持ちと前に途中まで作っていたJavaのAndroid用ライブラリの続きもやんなきゃなぁ、つーか仕事探さないとなぁって感じであれです(・∀・)

そういえば200円で買って来たUnity4の本もあるから、あれも目を通すかなヽ( ・∀・)ノ

UnityではじめるC# 基礎編 Kindle版 大槻有一郎/いたのくまんぼう

50%セールの時に¥1,188でこうたった(`・ω・´)


結論から言うと、ぼちぼち満足した(・∀・)

C#をタイトルに入れているけれども、C#の勉強になったかというと、
そうでもないと思ったw

一応、データ型とか条件分岐等の説明はあるものの、C#特有な話はほとんどないので、Javaとかかじって歯ぐきから血が出たりしてるような人ならChapter3までは流し読みで大丈夫だと思う。まぁ本書で作るゲームのレベルであれば、それほどC#をバリバリ使いこなす必要はないし、一から十まで説明していくとページは足らなくなり、挫折者多数になること必至だから、これくらいの説明で良いと言えば良い。でもやっぱり人によってはタイトル負け感を覚えざるを得ないかもしれないw


本書は前半がC#関連、後半がUnityや必要なライブラリのインストール方法からUnityエディタの使い方、ゲームの作り方、実機へのインストール及び公開方法の説明となっているが、前述の通り、後半が大事(・∀・)ワカリヤスイ

そういうわけなので、或る程度、プログラミング関連の知識があって、Unityを触ってみようと思ったけど、なんだかUnityエディタとかよくわかんない(´・ω・`)という人には良い本だと思った。

あとamazonのレビューで他の人の感想を眺めたが、プログラミング初心者には好評な感じであった。


サンプルデータと正誤情報は
『UnityではじめるC# 基礎編』サンプルデータダウンロード+正誤情報

インストール部分はVisual Studioの方でインストールされていたので余り詳しくチェックはしてない。(実はAndroid向けモジュールがインストールされておらず、P112のコラムを見てダウンロードした(ノ∀`))

基本的に致命的な問題はなかったような気がする。ただバージョンアップでRigidbody2Dの[isKinematic]の設定がなくなって[BodyType]の方で設定するようになったらしく、この部分に関しては下記エントリで説明されている通りにした(・∀・)
[教材]「UnityではじめるC# 基礎編」をやってみた [本・電子書籍]
※2018/09/19追記
Rigidbodyの設定項目では依然として[isKinematic]が存在していた。

以下はどうでもいいことを、可愛い息子タンをアバズレに奪われたヽ(`Д´)ノと発狂している姑目線で挙げる。

  • P45の本文と画像が”Test.name”になってるけど、”Person.name”じゃないとおかしい。
  • P48の”ジス”はどうだろう。”ディス”も完全な発音ではないんだろうけども。
  • P139で机のGameObject名は”ImageDesk”にするのに、pngファイル名は”table.png”でもにょる(´・ω・`)

といった感じに書くと、何もかもが上手く行ったラヴィアンローズ的Unity体験であったかのように読めるが、実は色々とはまった…(ヽ’ω`)ダイタイハジブンノセイ

  • 設定したGameビューのアスペクト比設定が何故かフリーアスペクトに変わっていて、他のGameObjectを覆ってしまい、クリック出来なくなる事件(´・ω・`)
  • ビルド途中でエラーが出て、ビルドが終了しない(´・ω・`)
  • ビルドは終了するようになったが、Androidの実機にインストール出来ない(´・ω・`)

1つ目の問題は物理パズルゲームで作業するまで原因が判らず、PanelWallをStretchから固定サイズ(centerxmiddle)に変えて800×1280を設定するという力技で凌ぐ(`・ω・´)

2つ目と3つ目の問題は結果的には解決したが、今ひとつすっきりせず、なんかモヤモヤが残った…

  1. SH-M01(android4.4)という端末をつないで。(この時、エクスプローラからSH-M01は認識されており、中身も見えた。)
  2. “CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct.” みたいなエラーとかが出る。
  3. どうも最新のandroid sdk toolだと上手くUnityでビルドが出来ないらしいので、ダウンロードしてきて上書きしてビルドする。(Unity で Android 向けにビルドが出来ない)
  4. やっぱり上手くいかないのでadb.exeを落としてみる。(UnityのAndroidビルド時にエラー “CommandInvokationFailure: Unable to forward network traffic to device. Please make sure the Android SDK is installed and is properly configured in the Editor. ” が出たときの解決策)

これでビルドまでは上手く行った(・∀・)


が、なんだか書き込みが出来ない。USBデバッグも有効だし、mtp接続だし、提供元不明アプリも許可している。仕方がないのでshv40(android7.1)という端末でも試すがこれまた一緒。なんじゃらほいと思い、ケーブルを変えても駄目。

でまぁ、よくよく見たらshv40の方は接続が”充電のみ”になっていた(ノ∀`)
mtp接続にしたら、インストールまで上手く行った。

SH-M01の方は[提供元不明アプリ]の下にあった[アプリを確認する]のチェックを外したら上手く行った。
でも今ひとつ、これが本当の原因だったのか切り分けが出来なくてモヤモヤしている。
android4.4の実機がもう一台あれば試せるけど、面倒くさいからいいか(ノ∀`)

※2018/1/22追記
SH-M01の方は最初に試したケーブルが駄目だった模様。MTP接続では端末が見えていて、エクスプローラーで端末のファイルをコピー(Read)するのは可能だが、端末へのペースト(write)が駄目という謎の状態だった。他のケーブルにしたら、エラーが出ずに普通にインストール出来た。


ということで、Android SDK toolsをダウングレード?、(adb.exeの再起動)、接続設定の確認、接続ケーブルの確認で大体は解決すんのかな?


取り敢えず、「Unityの寺子屋」も一緒に買ったので、引き続き読むかヽ( ・∀・)ノ