レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

物理エンジンで物体に重さをつける

BLOCKVROCKでは、物理法則をコンピュータで計算再現して、物体に重さや衝突の判定を設定することができます。 ブロックに「動きのある物体」の属性を繋げましょう。

Y座標を少し上にセットしておくと分かりやすいです。

 

f:id:iad_otomamay:20191202180155p:plain

物理エンジンで重力をつける

 実行すると物体が、上からしたに落ちていく様子がみられます。

重力を発生させたのですが、これだけではあっという間に落ちてしまいます。

 

 

[公式]物理エンジンで重力をつける

物体の回転(Z軸)

Z軸は奥行きを表しますので、物体の中心を手前から奥に向かって通る軸を中心に回転します。

Z軸による回転は、カメラの目線が回転軸と平行になるため、時計回りであることがわかりやすいですね。

 

f:id:iad_otomamay:20191129170435p:plain

物体の回転(Z軸)

 

[公式]z軸60,90,135回転

物体の回転(Y軸)

Y軸での回転は、物体の中心に縦の軸を通してそれを中心に回転するということです。

やはり+になるほど時計回りに回転し、マイナスになるほど反時計回りに回ります。

 

今回は、マイナスの回転もやってみます。

f:id:iad_otomamay:20191129164956p:plain

y軸90,45,-45回転

[公式]y軸90,45,-45回転

物体の回転(X軸)

物体を回転させる回転属性については、初期段階で最も混乱するポイントのようです。

軸を中心にして+であれば時計回りに回転するというルールさえ理解できれば、あとはトライアンドエラーで作りたい角度を確認しながら進めていくのが良いです。

 

このサンプルでは、X軸で30度、45度、60度に回転させています。

半角英数字ブロックで、目印となるラベルを書いています

 

f:id:iad_otomamay:20191129163942p:plain

x軸で30度45度60度回転

 

[公式]x軸30,45,60回転

番号を指定して配列からデータを取り出す

配列は、データを複数まとめて扱う仕組みであり「繰り返し」という構造をとても相性がいいのですが、繰り返しのためだけのデータ構造ではありません。

データが順番に並んでいるので、番号を指定して配列のデータを使うこともできます。

この時注意が必要なのは、先頭のデータの番号は0番であるということです。

以下のプログラムで「list」配列に含まれる「1」というデータは、「list[0]」という指定をして取り出すことができます。

また「list」は3つの要素を持つ配列ですが、最後のデータ「-4」の番号は「list[2]」です。直感的とは言えないのですが、様々なプログラム言語で配列の番号はこのように0から始まります。

f:id:iad_otomamay:20191128164902p:plain

番号を指定して配列からデータを取り出して使う


 

[公式]番号を指定して配列からデータを取り出す

配列を使った繰り返し

繰り返しは大変便利なのですが、数字を規則的にカウンターとして取り出しながら繰り返すことが中心です。

規則的でない繰り返しや、微妙な微調整をするには配列を使った繰り返しを使うと良いでしょう。

 

配列とは変数とよく似た要素で「違いは複数のデータをまとめて保存できる」のが配列であるということです。

以下の例では、配列にカンマ区切りの小数データを入れて、その配列を繰り返しています。

 

小数データを使って、物体に異なる透明度を設定しました。

これによって真ん中の物体だけ少し透明度を抑えたいなど、配列のデータを操作することで繰り返しで使われるデータを微調整することができます。

 

f:id:iad_otomamay:20191128165631p:plain

配列の要素を繰り返す


配列の要素を繰り返す

繰り返しブロックの内側に複数のブロックを書く

繰り返しブロックの内側にも物体などを組み合わせて配置することができます。

繰り返しブロックの内側を1回の仕事として実行して、次の繰り返しに移るという動作のしかたをします。

 

「= counter」が入っている箇所をよく確認してみてください。

  1. 繰り返しブロックでcounter変数を作る
  2. 直方体のX(横位置)を「counter * 2」としている(掛け算をしているのは少し間隔を離すため)
  3. 球体のX(横位置)も「counter * 2」としている直方体とはY位置がずれているので重なってしまわない
  4. 半角英数字の表示文字として「= counter」を指定している。またXも直方体、球体と同じく間隔をとっている

 

f:id:iad_otomamay:20191128133020p:plain

 

繰り返しのイメージは、プログラミングでは大変重要なので色々な繰り返しを試して感覚を身に付けることが大事です。


[公式]繰り返しでたくさんの物体を作る