Unityの寺子屋 定番スマホゲーム開発入門
- Imageコンポーネント内の[Raycast Target] をオフにする
→タッチ判定の対象外になる
- public で変数を定義することでインスペクターを使ってゲームオブジェクトを取得することができる
//オブジェクト参照 public GameObject orbPrefabs;
スクリプトだけでもゲームオブジェクトの取得は可能だが、エディタ上で対象のゲームオブジェクトやプレハブを変更することができる
- Instantiate(インスタンシエイト)メソッド
GameObject orb = (GameObject)Instantiate(orbPrefab);
PrefabをGameObjectとして出現させるときに使うと考えられる...
- クリックを検出する一連の流れ
P.64参照
EventTriggerコンポーネントを追加する
- ゲームオブジェクトの画像を切り替える
GetComponent<Image> ().sprite = hoge;
このスクリプトはゲームオブジェクト(Image)にアタッチされていなければいけない
- 地面にプレイヤーが設置しているかどうかの判定を行う
Linecastメソッドを使用する。このメソッドでは与えた線分上に特定のレイヤーに属するColliderが存在する場合にTrueを返す
canJump = Physics2D.Linecast(transform.position - (transform.right * 0.3f), transform.position - (transform.up * 0.1f), blockLayer) || Physics2D.Linecast(transform.position + (transform.right * 0.3f), transform.position - (transform.up * 0.1f), blockLayer);
プレイヤーのスプライトの下端中央を軸と設定している。そのため上記のスクリプトで表される線分は
画像の赤線部分となる
- 敵を踏んだ時に少し跳ね上がるような物理挙動を実装する
// 踏んだ rbody.velocity = new Vector2(rbody.velocity.x, 0); rbody.AddForce(Vector2.up * jumpPower);
rbody.velocity = new Vector2(rbody.velocity.x, 0); というコードの意味が分からなかった
→ AddForceでは物理的(現実的)な上方向への力をゲームオブジェクトへ加えるメソッドになっている。
そのため落下中のplayerは下方向への加速度が働いているので通常のジャンプの時と同様の力を上方向に加えても、通常のジャンプほど跳ね上がることはない。そこで敵を踏んだ瞬間にy軸方向への加速度(速度)を0にすることで、通常時のジャンプと同様のはね方を実装することができる。
アニメーション関係
- アニメーターコントローラーの現在の状態を取得する
AnimatorStateInfo stateInfo = imageMokugyo.GetComponent<Animator>().GetCurrentAnimatorStateInfo(0);
GetCurrentAnimatorStateInfoメソッドでは現在のステートの情報をAnimatorStateInfo型で返してくれる。
引数はレイヤーのインデックス