忍者ブログ
とりあえずオキュラス発売までにunityであれこれ作れるようになることを目標として日記とする所存。その他には大学で学んだこと、勉強会でのあれこれなど。

unityで2d横スクロールゲー作る_part6

スタート画面、ステージ、ゲームクリアゲームオーバー…もう完成と言っていいレベルであるが、時間がありそうなのでもう一つギミックを作って、それを使ったステージをつくるとする。

という訳で今回は移動床を実装していく。




イメージはこんなかんじ。
一番の問題は一緒に動かすところであるがとりあえず順に実装していく。

・床を往復させる

・乗ったものを一緒に動かす


1.床を往復させる


移動させること自体は簡単である。

移動でも使用したtranceform.positionで移動させる。が、このままではプレイヤーが床において行かれてそのままずり落ちてしまう。




これはこれで仕様にできなくもないが難易度爆上がりなのでちゃんとプレイヤーも一緒に動かせるようにする。

前回のゲームオーバー、ゲームクリアの判定に使用した、OnTriggerEnter2Dを使用して足下の剛体と動く床の剛体が接触していることを確認してみる。

function OnTriggerEnter2D(col:Collider2D){
    if(col.tag == "block"){
        spd = spd*(-1);
    }
    if(col.tag == "Player"){
        ridden = true;
    }
}


また、プレイヤーのゲームオブジェクトを

    player = GameObject.Find("sigure");

として探しだします。動く床とプレイヤーが接触している状態をriddenとしているのでfunctionUpdataに、

    transform.position.x += spd;
    if(ridden){
        player.transform.position.x += spd;
    }

上のように書くことで、実際同時に動かすことには成功したが
このままでは床からはなれても床と同じ方向に動き続けてしまう。
床に足が着いているときだけriddenをtrueにして欲しいので、OnTriggerStayと、OnTriggerExitを使用する。

function OnTriggerStay2D(col:Collider2D){
    if(col.tag == "Player"){
        ridden = true;
    }
}
function OnTriggerExit2D(otherCollider2D) {
    ridden = false;
}

この方法で、床の動く方向をY軸方向にすると縦に動く床ができる。
この辺でとりあえずこのシリーズは一旦終了です。


よく調べなくてもか●これは二次創作ゲーム禁止だったので、東方にでも差し替えておきます#そのうち
PR