今回は、画面サイズのタブレットへの移行と汚くなってしまった変数やオブジェクトの整理をします。まとめ回でもあります。
タブレットで新規作成
新しくアプリを作成し、ラベルを追加します。
そして、前回までに作成していたオブジェクトたちをコピペしていきます。
オブジェクト、コードをコピペし終わりました。書き換えきれてない変数を見るときに、"ビュー"の"変数"がとても役立ちました。
それでは、書き換えたオブジェクト、変数を見ていきましょう。
変数
グローバル変数
Hideg
falseのときに地面のラベルが消えてスライダーなどが見えるようになります。
左上のチェックボックスでtrue/falseを切り替えます。
jumptstop
スライダーを止めるかどうかを判断するブール値です。jumpボタンを押すとfalseになります。
jumpt
ジャンプしている間の時間です。スライダーの値をそのまま使用しています。
ojisan_head
おじさんの頭の位置です。
ojisan_foot
おじさんの足の位置です。
g
重力加速度9.81です。
v0
ジャンプの初速です。現在は70に設定しています。
コンテキスト変数
Y,v
おじさんの高さ方向の位置です。普通にジャンプしたときと、途中で障害物に当たった時で式が変わります。
普通にジャンプしたとき
UpdateContext({v:(-v0+gjumpt),Y:ground.Y-ojisan.Height-v0jumpt+0.5gjumpt*jumpt})
障害物に当たった時
Reset(jumptimer);UpdateContext({v:g*jumpt,Y:block.Y+block.Height+0.5*g*jumpt*jumpt})
falling
おじさんが落下しているかどうかを判別します。
jumping
途中で障害物に当たったかどうかを判別します。
オブジェクト
groundhide
地面を表示するかどうかのチェックボックスです。地面の下にはスライダーなどが隠れています。
Set(Hideg,true) // OnCheck
Set(Hideg,false) // OnUncheck
block
ただのブロックです。まだ破壊できません。ワッフルメニューの色を変えています。
164 // Y
jump
押すとおじさんがジャンプするボタンです。
OnSelect
Set(jumptstop,!jumptstop); // jumpstopをfalseにする
If(!jumptstop,Reset(jumptimer));
// !jumpstopなら、jumptimerをリセット
Set(jumpt,0);Set(v0,70);UpdateContext({falling:false,jumping:true}) // それぞれの定数、変数を定義
ground
今は特に重要なコードなどは割り当てていません。
Hideg=true // Visible
ojisan
おじさんです。移動させるだけで処理は他のオブジェクトでやっているのでコードはY軸の指定以外ないです。
Y // Y
jumptimer
ジャンプで一番重要なオブジェクトです。その分コードも長くなっています。
OnChange
If(jumptstop,"",Set(jumpt,jumpt+0.1)); // 時間
If(jumping=true,UpdateContext({v:(-v0+g*jumpt),Y:ground.Y-ojisan.Height-v0*jumpt+0.5*g*jumpt*jumpt}),Reset(jumptimer);UpdateContext({v:g*jumpt,Y:block.Y+block.Height+0.5*g*jumpt*jumpt})); // 速度、位置
Set(ojisan_foot,Y+ojisan.Height);Set(ojisan_head,Y); // おじさんの足と頭の位置を設定
If(v>0,UpdateContext({falling:true}),UpdateContext({falling:false}))
; // 速度が正なら落下していると判断
If(falling=true,If(ojisan_foot>ground.Y,Set(jumptstop,true);UpdateContext({Y:ground.Y-ojisan.Height}),"")); // 落下している時に地面よりに足の位置が超えたら地面と足の位置を合わせる
If(falling=false,If(ojisan_head<block.Y+block.Height,UpdateContext({jumping:false}))) // 上昇している時にブロックにぶつかると通常のジャンプではないと判断
Default
jumpt
OnStartに設定するボタン
デバッグ画面を起動したときにはOnStartが開始されないので、OnStartに設定するボタンを作ります。
Set(g,9.81);UpdateContext({falling:false}) // それぞれの定数、変数を定義
まとめ
今回は画面サイズのタブレット化、関数とオブジェクトの整理をしました。今回のように数回に一度まとめ回をしますので、コピペだけで作ってみたいという方はまとめ回だけ見るのもいいかもしれません。