玉転がしゲーム
この前の記事まで作ってたジャンプゲームの影も形もなくなり、前回、前々回は双六を作っていた。ただ講師の方がある程度作ってくれていて、それを完成させるという形だった。その途中まで作ってある双六を手に入れられないので、双六に関してはスルーする。で、今回は1から玉転がしゲームを作るということだった。乃木坂ちゃん同様自分も完全に忘れているので手探りでやっていく。
どんな?
こんな。弓木ちゃんはパチンコって言ってた。確かに~。
開発
番組上省略されてる部分もあるので、参考にしつつやったことって感じ。
プロジェクト作成
Unity Hubで新しいプロジェクト、2D、名前入れて作成。Window→Layoutsで2by3に変更。
中央の歯車を作る
オブジェクト作成
GameObject→2Dobject→Sprites→Squareで作る。作ったオブジェクトの四方に青い丸があるのでそれを引っ張ると形を変えられる。歯車の歯を作りたいので細長い形にする。
当たり判定を付ける
Inspector内でAdd Component、Physics2D→BoxCollider2D
オブジェクトをコピー
Hierarchyにオブジェクトをドラッグして~みたいな前回のプレハブ化もあるけど、Hierarchyのオブジェクト名を右クリックでコピぺができたので、それで歯を増やす。
オブジェクトに角度をつける
Scene画面に回転矢印みたいなマークがあるのでそれをクリックするとオブジェクトの周りに青い円が表示される(RotateTool)。それをドラッグすると角度を付けられる。他に、Inspector内のTransformでrotationのZの値を変えることで角度が付けられる。きっちりやるならこっちかな?
でかい。
歯に親子関係を作る
歯がバラバラなのでくっつける…ではなくて、親子関係を作るということらしい。
Hierarchyの空白の所で右クリック、CreateEmpty。そんで、できたオブジェクトの中にSquareをドラグ&ドロップする。そしたら、歯車にRigidbody2Dのコンポーネントを付与する。
回すためにスクリプトを書く
歯車のAddComponentでNewScript。
public class Kaiten : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void FixedUpdate()
{
m_rigidbody.angularVelocity = 60.0f;
}
[SerializeField]
Rigidbody2D m_rigidbody;
}
こう書く。
試しに動かす
歯車のGravityScaleを0にする。再生ボタンを押す…動かない!エラーが出てる。
UnassignedReferenceException: The variable m_rigidbody of Kaiten has not been assigned.
You probably need to assign the m_rigidbody variable of the Kaiten script in the inspector.
Kaiten.FixedUpdate () (at Assets/Kaiten.cs:15)
ええ~。まぁ確かに今回StartにGetComponent()って書いてないから、なんでだろうとは思ったんだけどさ。色々調べてみたところ、SerializeFieldの話があり
歯車のInspactorにRigidbodyを指定してやればよさそう。
そしたら再度、再生ボタンを押すと
できた!とりあえず今日の仕事終わり!
コメント