『東京パソコンクラブ』でアイドルとUnityを学ぶ ④ 玉転がしゲーム

スポンサーリンク
スポンサーリンク

玉転がしゲーム

引き続きやっていこ~。

スポンサーリンク

大きさ変えたり、他の障害物作ったり

いつの間にか作られていたので作っとく。大きさはInspectorのScaleで変えられる。あとなんかいつの間にかゴールが左の籠になってるな。CircleとSquareのスプライトを作って、それぞれにColliderを付与すればいいのかな。

スポンサーリンク

転がす玉を作る

キーで左右に動き、落ちていくような動きをする玉を作る。

オブジェクトを作る

Circleのスプライトを配置し、Rigidbody2DとCircleColider2Dを付与する。この時点で再生すると、歯車とぶつかった場合にそれもろとも下に落ちていく。

オブジェクトを固定する

玉は動いててほしいが、歯車は動いてほしくない。歯車に動かないような設定を付与する。歯車のRigidbodyにConstraintsという項目があるので、XYにチェック入れる。そのほかの障害物がなぜ当たっても動かないかというとRigidbody2Dが付与されてないから。そのため物理演算の影響は受けず、当たり判定だけが効く。ふーん。

キー入力で玉を動かす

解説をそのままやる。玉のGravityScaleを0にする。NewScriptでコード書く。

public class BallControl : MonoBehaviour
{
    Rigidbody2D m_rigidbody;
    bool m_fallFlag = false;

    // Start is called before the first frame update
    void Start()
    {
        m_rigidbody = GetComponent();
    }

    // Update is called once per frame
    void FixedUpdate()
    {

        if (m_fallFlag)
        {
            m_rigidbody.velocity = new Vector2(0, 0);
        }
        else
        {

            if (Input.GetKey(KeyCode.LeftArrow)) 
            {
                m_rigidbody.velocity = new Vector2(-7, 0);
            }
            else if (Input.GetKey(KeyCode.RightArrow)) 
            {
                m_rigidbody.velocity = new Vector2(7, 0);
            }
            else
            {
                m_rigidbody.velocity = new Vector2(0, 0);
            }

            if (Input.GetKey(KeyCode.Space))
            {
                m_rigidbody.gravityScale = 10;
                m_fallFlag = true;
            }
        }
    }
}

うむ。この{}の使い方が嫌いなんだけどどうにかならんかな。

できた。いぇい!

コメント

タイトルとURLをコピーしました