提供: Japanese Scratch-Wiki

2016年6月22日 (水) 01:53時点におけるKurankuran (トーク | 投稿記録)による版

() へ向ける
カテゴリ 動きブロック
タイプ スタックブロック

() へ向けるブロック動きブロックスタックブロック )を使うと、現在のスプライトを、マウスのポインター、または、他のスプライト(コスチュームの中心が基準となる)に向けることができる。これによって、スプライトの向きが変わり、スプライトが回転する。

使用例

() 度に向ける ブロックが、特定のオブジェクトを向くものではないのに対し、「() へ向ける」ブロックは、別のスプライトやマウスポインターの方向にスプライトの向きを変更できる。 「() へ向ける」ブロックのよくある使用例は次のとおり:

  • スプライトが常にマウスポインターの方を向くようにする
@ がクリックされたとき
ずっと
   [マウスのポインター v] へ向ける
   (10) 歩動かす


  • スプライトの進むべき方向を示す
[スプライト2 v] へ向ける
 <[スプライト2 v] に触れた?> まで繰り返す
   (5) 歩動かす
   


[ヒント v] を受け取ったとき
[たからもの v] へ向ける

別のブロックによる表現

このブロックは、次のように三角法(三角関数)を使うと、別のブロックで代用できる。

[delta_x v] を (([x 座標 v] of [スプライト1 v]) - (x 座標)) にする
[delta_y v] を (([y 座標 v] of [スプライト1 v]) - (y 座標)) にする
もし <(delta_y) = [0]> なら
もし <(delta_x) < [0]> なら
 (-90 v) 度に向ける
でなければ
(90 v) 度に向ける
end
でなければ
もし <(delta_y) < [0]> なら
((180) + ([atan v] of ((delta_x) / (delta_y)))) 度に向ける
でなければ
([atan v] of ((delta_x) / (delta_y))) 度に向ける
end
end

関連提案

複数のScratcherから、このブロックに近い、特定の座標位置を向くブロックの導入が要望されている [1]

しかしこの動作は、向かせたい座標に別のスプライトを置いて「() へ向ける」ブロックを使うか、次のスクリプトを使うことで実現できる。

[delta_x v] を ((x) - (x position)) にする
[delta_y v] を ((y) - (y position)) にする
もし <(delta_y) = [0]> なら
もし <(delta_x) < [0]> なら
(-90 v) 度に向ける
でなければ
(90 v) 度に向ける
end
でなければ
もし <(delta_y) < [0]> なら
((180) + ([atan v] of ((delta_x) / (delta_y)))) 度に向ける
でなければ
([atan v] of ((delta_x) / (delta_y))) 度に向ける
end
end

変数 xとyには、向かせたい座標を入れる。

出典

  1. http://scratch.mit.edu/discuss/post/62984

参照