UnityでVisual Studio2017使ってたら突然編集できなくなった話。

どーも、Yuyaです。

ちょっくらポートフォリオとしてソースコードが必要になったためせっせこ書いていたら突然……

 

別の編集を実行中にTextBufferの編集操作を行おうとしました。

編集しようとするとこれが出ます。

割と焦りました。

 

こーゆーときはとりあえずまあ再起動です。

 

もちろんソースコードは保存しておいて。

 

Visual Studioを再起動すると何事もなかったかのように使えるようになりました。

 

ググってみた感じやっぱりバグっぽいです。

 

しかしなぜか私、天下のマイクロソフトにバグをお見舞いしてやったぜ!!という気分になりました。

 

 

多分、テスト勉強とコーディングで疲れてるんだと思います

 

 

頑張ります。

 

じゃあね~~~。

UnityのAndroidビルドでハマった話

Unityで作ったゲームプロジェクトをAndroid でビルドしようとしたらわりとてこずったので備忘録かきます。

普通にやったこと

Android studio SDKのインストール

Javaのインストール

 

出たエラー

SDKのパスがおかしいよ toolsが使えないよ

的なエラーが出た。

 

解決方法

Android Studio のサイトの下のほうにあるZIPパッケージをダウンロードして

その中にあるtoolsフォルダをコピー

Unityにパスを通してあるディレクトリのtoolsを上書き

 

治った!!!!!

 

Debug.Log(“テストしんどい….“);

UnityC#を超入門してみる。①public ってなんだよ

今まで様々なUnityの記事を書いてきましたがいったん初歩に帰ってUnityで使うC#言語について超入門していきたいと思います。

ではUnityでC#スクリプトファイルを作成したときのヤツから解説していきたいと思います。

 

こやつですね。

①usingってなんやねん

 

using UnityEngine ではUnityで用意されている様々なパーツを使うことを宣言します。

Unityでは物理演算や3Dの描画など様々な機能が標準で用意されていますのでそれらを使えるようにするための宣言です。

②MonoBehaviourってなんやねん

public class NewBehaviourScript : MonoBehaviour {    }

C#では ” : ” によってクラスの継承を行うことができます。

継承では継承元(ここではMonoBehaviour)クラスのメンバー(変数とか)をそのまま呼び出すことができます。

Unityエディタ内で書くC#スクリプトはすべてこのMonoBehaviourを継承している必要があります。

このMonoBehhaviour内でvoid Update()は1フレームごとに呼ばれるだとかRigidbodyコンポーネントは物理演算をしてくれるとかが決まってるわけです。

それらを使うために継承が必要なわけですね。

③public ってなんやねん

publicとは英語で公共のという意味ですが、ここでのpublic もまさにその意味でpublic とついて宣言された変数については他クラスから呼び出すことが可能です。またpublicな変数ならインスペクターから確認、変更ができます。

逆にprivateで宣言された変数に関しては他クラスから呼び出すことができません。

 

④全部publicでいいじゃん

確かにそうかもしれません。publicな変数ならインスペクターから確認、変更ができるし。

しかしプログラムが莫大となった時、別のクラスで同じ名前の変数を複数宣言する際、すべてpublicだとどれのことかわからなくなります。

これを避けたいときにprivateを使います。例えばインベーダーゲームを作るとき、普通ならプレイヤーの位置はprivateで構わないでしょう。

しかしプレイヤーの位置によって敵の動きを変えたいならその敵オブジェクトからプレイヤーの位置を知れる必要があります。その際はプレイヤーの位置はpublicな変数である必要がありますね。

 

 

 

 

To Be Continued….

Unity2Dでタップで飛ぶゲームを作る④障害物に当たり判定をつける

前回にて壁ブロックが自動生成され向かってくるところまでつくりました。

しかし、このままでは鳥とブロックが当たっても何も起こりません。

今回は障害物に当たり判定をつけていきます。

①鳥にBox Collider 2D をアタッチする。

Edit Colliderで形を調節してみてください。

 

②ブロックのPrehubにBox Collider 2D をアタッチする。

 

③鳥のRigidbody2Dの設定でConstraintsのFreeezeRotationにチェックを入れる。

これでくるくる回らないようになります。

 

これでプレイしてみてください。

あたると後ろに持っていかれる筈です。

 

いい感じですね。

 

今回はここまでです。

 

 

 

Unity2Dでタップで飛ぶゲームを作る③障害物をランダムで生成する。

今回は障害物となるブロックをランダムで生成していきましょう。

まずロジック(アルゴリズム)を考えましょう。

  1. 乱数を生成しその数のブロックが複製される
  2. 位置が画面ギリギリのY軸を基準に調整される
  3. 複製されたオブジェクトは空のゲームオブジェクトの子オブジェクトになる
  4. 3の親オブジェクトがずっと左に移動する。

こんな感じで実装してみましょう。

①左に移動し続ける空のオブジェクトを作成する。

AllTransという名前で空のオブジェクトを作成しました。現在のヒエラルキーは以下の通りです。

②Blockを複製できるようPrehub化する。

Blockを複製して取り扱いやすいようにPrehub化しましょう。

シーンにあるBlockをしたのAssetのところにドラック&ドロップします。画像とかC#スクリプトとかがあるところですね。

こんなのができました。

③ゴリゴリ、スクリプトを書く

以下のスクリプトをAllTransにアタッチしてください。

インスペクターで値をとりあえず以下のようにしてみてください。

  • Block:Prehub化されたBlock(※シーンにあるものではない)
  • AllTrans:親となる空のゲームオブジェクト
  • Allspeed:ブロックが左に向かってくるスピード
  • TimeOut: ブロックが来る頻度
  • Block Base X : 画面の右の外側となるX (10ぐらい)
  • Block Base Y : 画面の端となるY(4.5ぐらい)

 

 

以下のようになりましたか。

 

 

しかしこれでは鳥がブロック当たっても何も起きません。

次回はコライダーを設定し当たり判定をつけていきましょう。

 

Unity2Dでタップで飛ぶゲームを作る②鳥を飛ばす

前回までで素材をインポートしました。

今回は鳥を飛ばす機能を実装しましょう。

①鳥にRigidBody2Dをアタッチし重力で落ちるようにしましょう。

RigidBodyではなくRigidBody2Dであることに注意してください。

RigidBody2DのSimulatedのチェックが重力で落ちるか落ちないかです。

②鳥が左クリックすると飛ぶようにしましょう。

以下がスクリプトです。

Birdに飛ばす鳥を、Jump Powerで飛ばす力を調節してみてください。

以下がRigidbody2Dとスクリプトのインスペクターでの設定です。

 

こんな雰囲気になりました。

Unity2Dでタップで飛ぶゲームを作る①

今回からUnity2Dでタップで飛ぶゲームを作って行きたいと思います。

①2Dで新規プロジェクトを作成しましょう。

②このゲームで使う素材たちをインポートしましょう。

作りたいゲームの雰囲気です。

 

インポートする画像たちです。

 

③とりあえずこれらをシーンに配置していきましょう。

こんな雰囲気でしょうか。

いったん位置等は適当です。

 

実装としてはこの鳥は重力で落ちていってタップで上にあげて右から左へ流れてくるブロックを避けていくわけですね。

 

 

 

今回はここまでです。

Unity2Dでタップで飛ぶゲームを作る⑤コインがでるようにする

前回まででゲームの根幹をなす部分はできました。

今回はプラスの要素としてコインがでて集めれるようにしましょう。

 

①コインの画像とコインを拾ったときの音を拾ってくる

http://design-ec.com/?p=9

http://taira-komori.jpn.org/game01.html

画像は一度シーンに配置しAssetsにドラック&ドロップしてPrehub化してください。

名前はcoinとします。

 

②CoinのPrehubにCircle Collider2Dをアタッチする。

CoinのPrehubにCircle Collider2Dをアタッチしてください。

そしてIs Triggerにチェックを入れてください。これで当たり判定だけを発生させ当たったときに力は発生しません。

 

 

 

②BlockCreater.csを改変する。

 

以下が改変したBlockCreater.csです。

スクリプトの値です。

CoinでcoinのPrehubを選択してください。

 

②コインに当たった時に音が鳴りコインを消すようにする

先ほどインポートした音源をシーンの鳥オブジェクトにアタッチしてください。

するとAudio Sourceというコンポーネントが追加されます。

Play On Awakeのチェックを外してください。

そしてシーンのオブジェクトにAudio Listenerを追加してください。追加されていればその一つで構いません。

 

コインに当たった時に音が鳴りコインを消すようにしましょう。

BirdController.csを改変します。

以下が改変したBirdController.csです。

以下が値です。

Coin Get Soundにコインの音源を選択してください。

いい感じですがコインの位置等はだいぶ適当なスクリプトです。

自分なりに変えてみて下さい。