トップページへ
 イベント
・可動ブロック   | 利用規約 | 使い方 | 操作方法 |
■説明
自機が横から押すことで左右に動かせるブロックです。
上に乗ることができるので、足場にして高いところへジャンプする
ことができます。ブロックの切れ目に持ってきて押すと下に落とす
ことも可能です。

■参考
自機の移動 - ハシゴ動作
敵の移動 - エッジで折り返す

■解説
自機がブロック左側にいる場合を例にとります。
下図で、自機がブロックの赤色部分を押す時の条件を設定するにあたって、
何を知らないといけないか考えてみます。

    A. 自機のX座標とブロックのX座標の差
    B. 自機のY座標とブロックのY座標の差
    C. ブロックに対し、自機が右にいるか、左にいるか
    D. 自機が動いているかどうか

AとBについては、差を具体的にどうするか決める必要がありますが、
プログラムを走らせて、動きが自然に見えるように値を設定していきます。

A〜Dがわかれば、自機が赤色部分を押しているかどうか判断できます。
プログラムで表現すると以下のようになります。

    if(abs($Mychar.y-y)<blockwidth-5 && $Mychar.x<x &&
              abs($Mychar.x-x)<blockwidth-7 && $Mychar.vx>=0)

    ※blockwidthには32の定数がいれてあります。





◆上記以外の細かな条件設定

  ・自機が空中にいるときにブロックを押せるのは違和感があるので、
   Y方向の移動がない場合にのみブロックを押せる条件をつけます。

    if ($Mychar.vy==0) {$Mychar.vx=0 ; if (wY>=1||ld==2)vx=0.3;}

  ・自機が高スピードで落下すると、ブロックにめり込んではじき出されるので、
   この防止を行います。

    if ($Mychar.vy< 6) $Mychar.x-=blockwidth-5-abs($Mychar.x-x)-$Mychar.wsp;




トップページへ