必要とする最低限の処理を組み込んだサンプルです。
(リスタート処理はスクリプトが複雑になるので割愛)
どの命令で何を行っているのかは一通り説明したつもりですが
詳細はF1ヘルプの命令解説を読んで下さい。
#include "obaq.as"
pos 500, 30
button gosub "Go", *start : btnid = stat ; Goボタンの設置
*setting
qreset ; OBAQ初期化
qaddpoly ball, 20, 80.0, 20.0, 0.0, 5.0, 5.0, 1, 1 ; ボール(20角形)作成
qtype ball, type_bind, 0 ; ボール位置を一時固定
qaddpoly goal, 4, 80.0, 100.0, 0.0, 20.0, 5.0, 1, 2 ; ゴール(4角形)設置
qtype goal, type_bind, 0 ; 位置を固定
qgroup ball, 1, 0, 2 ; ボールにqcollisionでコリジョン(当たり判定)を受け取るグループを設定
qaddpoly block1, 4, 120.0, 30.0, 0.0, 10.0, 10.0, 1, 4 ; 移動ブロック(4角形)の設置
qinertia block1, , 0.0 ; ブロックを落下しないように設定
qaddpoly block2, 3, 70.0, 60.0, 45.0, 10.0, 10.0, 1, 4 ; 邪魔ブロック(3角形)の設置
qtype block2, type_bind, 0 ;
*main
redraw 0
color 0, 0, 0 : boxf ; 画面のクリア
qexec ; OBAQの動的処理は基本的にqexecからqdrawの間に記述する
qspeed block1, 0.0, 0.0, 0.0, 2 ; 方向キーを離すと止まる
stick key, 15
if key & 1 : qspeed block1, -0.1, 0.0, 0.0, 2 ; 方向キーでブロックを上下に移動
if key & 2 : qspeed block1, 0.0, -0.1, 0.0, 2
if key & 4 : qspeed block1, 0.1, 0.0, 0.0, 2
if key & 8 : qspeed block1, 0.0, 0.1, 0.0, 2
qcollision ball ; ボールに設定したコリジョングループの判定取得開始
qgetcol hitchk, hitx, hixy ; コリジョングループ内の判定を取得(hitchkに接触したオブジェクトIDが入る)
if hitchk = goal : dialog "GOAL" :end ; ゴールにボールが触ったら終了
qdraw
redraw 1
await 16
goto *main
*start
qtype ball, type_bind, 2 ; Goボタンを押すとボールを落とす
return
移動ブロックがその場固定の回転だけという事だったのかもしれませんが
軸の指定を変えるだけで対応できるのでそこは独自に変更して下さい。