物体を回転させる回転属性については、初期段階で最も混乱するポイントのようです。
軸を中心にして+であれば時計回りに回転するというルールさえ理解できれば、あとはトライアンドエラーで作りたい角度を確認しながら進めていくのが良いです。
このサンプルでは、X軸で30度、45度、60度に回転させています。
半角英数字ブロックで、目印となるラベルを書いています
配列は、データを複数まとめて扱う仕組みであり「繰り返し」という構造をとても相性がいいのですが、繰り返しのためだけのデータ構造ではありません。
データが順番に並んでいるので、番号を指定して配列のデータを使うこともできます。
この時注意が必要なのは、先頭のデータの番号は0番であるということです。
以下のプログラムで「list」配列に含まれる「1」というデータは、「list[0]」という指定をして取り出すことができます。
また「list」は3つの要素を持つ配列ですが、最後のデータ「-4」の番号は「list[2]」です。直感的とは言えないのですが、様々なプログラム言語で配列の番号はこのように0から始まります。
繰り返しは大変便利なのですが、数字を規則的にカウンターとして取り出しながら繰り返すことが中心です。
規則的でない繰り返しや、微妙な微調整をするには配列を使った繰り返しを使うと良いでしょう。
配列とは変数とよく似た要素で「違いは複数のデータをまとめて保存できる」のが配列であるということです。
以下の例では、配列にカンマ区切りの小数データを入れて、その配列を繰り返しています。
小数データを使って、物体に異なる透明度を設定しました。
これによって真ん中の物体だけ少し透明度を抑えたいなど、配列のデータを操作することで繰り返しで使われるデータを微調整することができます。
繰り返しブロックの内側にも物体などを組み合わせて配置することができます。
繰り返しブロックの内側を1回の仕事として実行して、次の繰り返しに移るという動作のしかたをします。
「= counter」が入っている箇所をよく確認してみてください。
繰り返しのイメージは、プログラミングでは大変重要なので色々な繰り返しを試して感覚を身に付けることが大事です。
繰り返しのブロックには、「変数 xを カウントして」という記載があります。
繰り返しブロックを作ると、同時に変数xが作られて0(min)から10(max)までの繰り返しの数字が入る状態になります。
繰り返しブロックの内側で、この変数xを使うことができます。
位置x(横位置)、位置y(縦位置)のどちらも変数xの値にしたことで、右上に積み上がっていく階段になりました。
だれでも簡単にVRやARが作れるサービスBLOCKVROCKについてリファレンスを書いていっています。
記事を投稿したら、この目次を更新していきます。
【紹介】
1−1 BLOCKVROCKというWebVRサービス
https://daiyamamoto.hatenablog.com/entry/2019/11/26/144231
【BLOCKプログラミング入門】
1−2 BLOCKVROCKでHelloWorld
https://daiyamamoto.hatenablog.com/entry/2019/11/26/155341
1−3 物体の位置
https://daiyamamoto.hatenablog.com/entry/2019/12/11/135548
1−4 物体の回転(X軸)
https://daiyamamoto.hatenablog.com/entry/2019/11/29/164423
1−5 物体の回転(Y軸)
https://daiyamamoto.hatenablog.com/entry/2019/11/29/165257
1−6 物体の回転(Z軸)
https://daiyamamoto.hatenablog.com/entry/2019/11/29/170830
1−7 物理エンジンで物体に重さをつける
https://daiyamamoto.hatenablog.com/entry/2019/12/03/092215
1−8 物体を受け止める土台を作る
https://daiyamamoto.hatenablog.com/entry/2019/12/03/191744
1−9 殴れる物体を作る
https://daiyamamoto.hatenablog.com/entry/2020/01/05/210229
1−10 カメラを操作する
https://daiyamamoto.hatenablog.com/
1-12 視線の方向に常に直進する
https://daiyamamoto.hatenablog.com/entry/2020/01/25/190835
1−11 チェックポイントによる移動
https://daiyamamoto.hatenablog.com/entry/2019/12/18/215102
【BLOCKプログラミング中級】
2-1 BLOCKVROCKでの変数
https://daiyamamoto.hatenablog.com/entry/2019/11/27/200307
2-2 変数によるデータの名前付け
https://daiyamamoto.hatenablog.com/entry/2019/11/27/202320
2-3 変数と演算
https://daiyamamoto.hatenablog.com/entry/2019/11/27/215647
2-4 掛け算(乗算)の演算
https://daiyamamoto.hatenablog.com/entry/2019/11/27/222024
2−5 繰り返しを使った複数の物体作成
https://daiyamamoto.hatenablog.com/entry/2019/11/28/115904
2−6 繰り返しブロックのカウンタ変数
https://daiyamamoto.hatenablog.com/entry/2019/11/28/130559
2−7 繰り返しブロックでたくさんの物体を作る
https://daiyamamoto.hatenablog.com/entry/2019/11/28/133610
2−8 物体をアニメーションさせる
https://daiyamamoto.hatenablog.com/entry/2020/01/05/202141
2−9 クリックしたときに物体を移動させる
https://daiyamamoto.hatenablog.com/entry/2020/01/05/203214
【BLOCKプログラミング中上級】
3−1 配列を使った繰り返し
https://daiyamamoto.hatenablog.com/entry/2019/11/28/170256
3−2 番号を指定して配列からデータを取り出す
https://daiyamamoto.hatenablog.com/entry/2019/11/28/171105
【BLOCKプログラミング その他機能紹介】
4-1 子要素をとにかく円形に配置してくれるブロック
https://daiyamamoto.hatenablog.com/entry/2019/11/26/150446
【CODEプログラミング 入門】
5-1 JavaScriptコードモードを使って物体をアニメーションさせる
https://daiyamamoto.hatenablog.com/entry/2019/12/13/101010
コンピューターが得意なことの1つは、同じ作業を苦もなく繰り返すことです。
プログラミングはコンピューターへの命令なので、やはり繰り返し同じことを実行してもらう命令が重要です。
BLOCKVROCKでは、こういった繰り返しに使える「変数xをカウントして0から10まで繰り返す」というブロックがあります。
このブロックは、VRの世界が作られるときに内側のブロック定義を0(min) から 10(max)まで繰り返してくれます。
maxの値を大きくすれば繰り返しの数が増えます。
繰り返しの内側に、直方体などの物体のブロックを配置するだけだと、繰り返し同じ場所に物体が作られてしまい結果的に1つの物体しか作られていないように見えてしまいます。そのため位置や色をばらけさせる「ランダムな位置」と「ランダムな色」という属性ブロックを繋げておきます。
1シーン中にたくさんの物体を作ると、画面がとても重くなってしまうので最大300個ぐらいにしておくのが良いでしょう。
ランダムな位置やランダムな色の属性をつけると、元の直方体の色や位置は上書きされて使えなくなります。
このプログラムは、BLOCKVROCKのチュートリアルを書き始めたときに記載したサンプルとほとんど同じものです。
https://daiyamamoto.hatenablog.com/entry/2019/11/26/144231