-
-
Save t-tutiya/c5307db19ff562d3c16ae49cdb6cc21e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_RESIZE_ width: 512, height: 512 | |
#キャラの生成 | |
_CREATE_ :Image, id: :main_char, width:32, height:32, color: C_RED, x:32, y:416, z:100 | |
#マップデータ | |
MAP = [ [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], | |
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 1], | |
[1, 0, 0, 1, 1, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1], | |
[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1], | |
[1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1], | |
[1, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 1], | |
[1, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 1], | |
[1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1], | |
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1], | |
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], | |
[1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1], | |
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], | |
[1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1], | |
[1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1], | |
[1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1], | |
[1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1]] | |
#マップの表示 | |
_CREATE_ :TileMap, | |
width: 1024, height: 1024, size_x: 16, size_y:16, map_array: MAP do | |
_SET_TILE_ 0, path: "./script/jump_action/blue.png" | |
_SET_TILE_ 1, path: "./script/jump_action/blown.png" | |
_SET_TILE_ 2, path: "./script/jump_action/white.png" | |
end | |
#自キャラにコマンドを送信する | |
_SEND_ :main_char do | |
#プロパティを動的に生成 | |
_DEFINE_PROPERTY_ y_prev: 0, f: 1 | |
state_normal #通常ステートに遷移 | |
end | |
#通常ステート | |
_DEFINE_ :state_normal do | |
#スペースキー入力判定 | |
_CHECK_INPUT_ key_push: K_SPACE do | |
_RETURN_ do | |
sate_jump #ジャンプステートに遷移 | |
state_fall #落下ステートに遷移 | |
end | |
end | |
#フレームを終了する | |
_END_FRAME_ | |
_RETURN_ do | |
state_x_move #X方向移動ステートに遷移 | |
state_fall #落下ステートに遷移 | |
end | |
end | |
#X方向移動ステート | |
_DEFINE_ :state_x_move do | |
#横キー入力判定 | |
_PAD_ARROW_ 0 do |x:, y:| | |
_GET_ [[:x,nil,:now_x]] do |now_x:| | |
#X方向の増分を加算 | |
_SET_ x: now_x + x * 4 | |
end | |
end | |
#壁衝突判定 | |
_GET_ [:x, :y] do |x:, y:| | |
#壁衝突判定(左側) | |
if MAP[y/32][x/32] == 1 or MAP[(y+31)/32][x/32] == 1 | |
_SET_ x: x/32*32 + 32 | |
#壁衝突判定(右側) | |
elsif MAP[y/32][(x+31)/32] == 1 or MAP[(y+31)/32][(x+31)/32] == 1 | |
_SET_ x: x/32*32 | |
end | |
end | |
end | |
#ジャンプ開始ステート | |
_DEFINE_ :sate_jump do | |
#ジャンプ係数を初期化 | |
_SET_ f: -15 | |
_GET_ :y do |y:| | |
#前フレームのY座標を保存 | |
_SET_ y_prev: y | |
end | |
end | |
#落下ステート | |
_DEFINE_ :state_fall do | |
_GET_ [:f, :y_prev, :y] do |f:, y_prev:, y:| | |
#前フレームのY座標を保存&ジャンプ係数の初期化 | |
_SET_ f: 1, y_prev: y | |
#Y軸移動増分の設定 | |
y_move = (y - y_prev) + f | |
#座標増分を加算。増分が31を越えていれば強制的に31とする | |
y += y_move <= 31 ? y_move : 31 | |
#Y座標の更新 | |
_SET_ y: y | |
end | |
#マップ外落下判定 | |
_CHECK_ over: {y:480} do | |
_SET_ x: 32, y: 0, y_prev: 0 | |
end | |
_GET_ [:x, :y] do |x:, y:| | |
#床衝突判定 | |
if MAP[(y+31)/32][x/32] == 1 or MAP[(y+31)/32][(x+31)/32] == 1 | |
#Y座標補正 | |
_SET_ y: y/32*32 | |
_RETURN_ do | |
state_normal #通常ステートに遷移 | |
end | |
end | |
#天井衝突補正 | |
if MAP[y/32][x/32] == 1 or MAP[y/32][(x+31)/32] == 1 | |
_SET_ y: y/32*32 + 32 | |
end | |
end | |
#フレームを終了する | |
_END_FRAME_ | |
_RETURN_ do | |
state_x_move #X方向移動ステートに遷移 | |
state_fall #落下ステートに再遷移 | |
end | |
end | |
_WAIT_ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment