用途別リファレンス

オブジェクトを動かす

ジャンプして落ちる

☆ジャンプしてオブジェクトに着地する

Main
x=150;
y=$screenHeight-48;
vy=0;
p=5;
roop=0;
new Block{x:x, y:$screenHeight-16};
while(roop<5){
  new Block{x:rnd($screenWidth), y:$screenHeight-16};
  roop++;
}
while(true){
  hantei=crashTo(Block);
  if(!hantei){
    vy++;
    y+=vy;
  }else{
    vy=0;
  }
  if(getkey("right")>0)	x+=3;
  if(getkey("left")>0)	x-=3;
  if(getkey("z")==1 && vy>=0){
    vy=-15;
    y+=vy;
    while(true){
      if(getkey("right")>0) x+=3;
      if(getkey("left")>0)  x-=3;
      vy++;
      y+=vy;
      hantei=crashTo(Block);
      if(hantei){
        break;
      }
      update();
    }
  }
  update();
}
Block
中身は何も書かなくてよい

最初にプレイヤーの下とランダムに5つの足場を表示し、左右に動きzキーでジャンプするプレイヤーを出現させる。当たり判定の値をhanteiに代入し、足場に触れてない間は落下させ、足場に触れている間は落下しないようにする。

☆ジャンプしてマップに着地する

Main
//事前にマップを作っておく
x=16;
y=$screenHeight-48;
vy=0;
p=5;
while(true){
    if(map.getAt(x,y+16)==-1){
        vy++;
        y+=vy;
    }else{
        vy=0;
    }
    if(getkey("right")>0)	x+=3;
    if(getkey("left")>0)	x-=3;
    if(getkey("z")==1 && vy>=0){
        vy=-15;
        y+=vy;
        while(true){
            if(getkey("right")>0) x+=3;
            if(getkey("left")>0)  x-=3;
            vy++;
            y+=vy;
            //マップに着地した場合。ここは1としているが、マップの床のチップ番号を入れる
            if(map.getAt(x,y+16)==1){
                break;
            }
            update();
        }
    }
    update();
}
マップを描画し、左右に動きzキーでジャンプするプレイヤーを出現させる。当たり判定は、プレイヤーの真下がブロックであるかどうか(ここでは、画像番号1を足場に設定しているため、画像番号1であるかどうか)を調べ、ブロックに触れてない間は落下させ、ブロックに触れている間は落下しないようにする。