Unityの教科書@6-5~
6-5~
プレイヤの移動に対応してプレイヤの体の向きも変わるようにする
スプライトを反転させて表示させる(スプライトのX方向の拡大率をー1倍)
6-6
プレイヤの動きに応じたアニメーションするようにする
AnimationClipを作る
ヒエラルキービューからオブジェクトを選択しツールバーから
Window→Animation→createを押してファイルを作成し保存
AddProperty→SpriteRendere→spriteの+
Animationウィンドウに画像をドラッグ&ドロップする(最後まで再生すると最初に戻ってくる)
Animationの速度はスクリプトから変化させることができる
//animatorはAnimatorコンポーネントを取得している変数 this.animator.speed=X;
次回6-8~
Unityの教科書@6-1~
6-1~
オブジェクトにPhysicsを適用する
Rigidbody→力の計算をする
Collider→物体の当たり判定
今回は2DゲームなのでRigidbody2Dをアタッチする
hierarchyビューからオブジェクトを選択しインスペクタの一番下にあるAddComponentをクリック
Physics2D→Rigidbody2Dを選択
Cllider2Dも同様にアタッチする
Colliderの種類
- CircleCollider→円形のコライダ
- BoxCollider→四角形のコライダ
- EdgeCollider→線形のコライダ
- PolygonCollider→多角形のコライダ(objectにフィットするような形にできる)
Rigidbody2Dの使い分け
tsubakit1.hateblo.jp
↑のブログにわかりやすくまとめられていたので引用させていただきました
今回は足場となるオブジェクトに重力の影響を受けないようにしたいのでオブジェクトのインスペクタのRigidbody2D→BodyType→kinematic
を選択する
移動するプレイヤに対してはカプセル型のコライダを使う。そうすることで接地部分の形状が円形になって引っ掛かりが少なくなる。
今回は四角形と円形のコライダを使って半カプセル型のコライダを作成する
足元が円形の当たり判定を持っているのですぐに転倒してしまう。それを防止するためにFreezeRotationを設定する。
FreezeRotationは指定した軸周りの回転を防止する
hierarchyビューでオブジェクトを選択し、インスペクタのRigidbody2DのConstraints→FreezeRotation
次回6-5~
Unityの教科書@5-10~
5-10
uGUIでボタンを作る
hierarchyビューのcreate→UI→button
で作成する
buttonに画像を付けたい場合は画像をbuttonのインスペクタのsourceimageにドラッグ&ドロップする
ボタンを押したときの関数を指定する
- hierarchyビューでボタンを選択
- インスペクタのOnClick()欄の+ボタンをクリック
- None(Object)にhierarchyビューから動かす対象をドラッグ&ドロップする
- NoFunctionと書かれたところをクリックして呼び出す関数を選択
呼び出したい関数にpublic修飾子を忘れない
5章完了
Unityの教科書@5-8~
5-8~
UIの作り方
- UIの部品を配置する
- UIを書き換えるスクリプトを作成する
- 空のオブジェクトに②をアタッチする
Create→UI→Image
今回は画像のUIを使用するのでImage
UIに使用する画像をUIのインスペクタのSourceImage欄にドラッグ&ドロップする。
アンカーポイント
画面サイズが変わった時にどこを起点にしてUIを表示する座標の計算をするかを示したもの
画面中央に設定していた場合画面が小さくなった時に隅にあるUIは画面からはみ出してしまう。
HP減少を表示させる
UIオブジェクトのImageにあるFill機能を使う。FillAmount変数の値を変化させて画像を変化させる。
インスペクタのImageTypeをFilledにする。
FillMethodで変化のしかた、FillOriginで変化の開始位置を設定する。
次回5-9~
Unityの教科書@5-7~
5-7~
Prefab(設計図のようなもの)
同じものをたくさん作りたい場合はPrefabを使う
Prefabの利点
あるインスタンスを10個作った時、コピーで作っていると色を変えるときなど10個全部を変更しなければいけない。Prefabで作っているとPrefabファイルを変更するだけで済む。
1秒間隔でオブジェクトを生成する方法
前フレームと現在フレームの時間差はTime.deltaTimeに代入される。
個の時間差を適当な変数に蓄積(加算)させ1秒たまったらオブジェクトを生成。
”鹿威しのイメージ”p203
Instantiate関数を使ってオブジェクトを生成する。
Instantiate関数
- 引数にPrefab(設計図)を渡すと、戻り値としてPrefabのインスタンスを返す
- 戻り値は通常object型で返されるのでGameobject型で返してほしいときはキャスト(強制型変換)する
RandomクラスのRange関数を使う。
Random.Range(a,b);//a以上b未満の範囲でランダムな整数を返す
アウトレット接続
スクリプト内の変数に、オブジェクトの実体を代入できるようになる
Unityの教科書@5-5~
5-5~
transform.Translate(float_x,float_y,float_z);
()の中身はfloatで入れる
Destroy関数
画面外に出てもオブジェクトが動き続けるのは無駄なのでDestroy関数を使って画面外に出たオブジェクトを破壊する
Destroy(object);
5-6~
当たり判定
オブジェクト同士の衝突を監視し、衝突したときに何らかの処理を行う
衝突を検知するまでを衝突判定、衝突を検した後の動きを決める部分を衝突応答を呼ぶ
輪郭線を当たり判定に使用すると計算が膨大で難しくなるので、円を使った大まかな輪郭で当たり判定を行う
三平方の定理を用いて計算する
次回5-7~
メンバ?クラス?メソッド?あたりが全然理解できていないけれど、とりあえず深く掘り進めず学校の授業で習っておいおい理解していくことにする。