カーソルを追いかける
投稿者:
mosmoss
投稿日:2016/05/17 03:21
aoihikawaさんの自機狙い弾のスクリプトを使って
カーソルを追いかけるスプライト画像の動きを作る
スプライトを中心を指定して回転させる関数と組み合わせたらより追いかけてる感がでた
目標地点を時間で区切って変えればランダム移動っぽくできるかもしれない
5/30追記
線を引く関数と組み合わせて、鯉の軌跡を表示できるように改変
鯉が急に曲がったかどうかを調べる関数を作るための準備
鯉を誘導する時に、なめらかに(小さな角度で少しずつ)方向転換できれば減点はなく
角度のついた方向転換は度合いによって-0.5、-1、-5など3段階の減点をしたい
鯉の進む方向を決めるのに使っているラジアンは始点と終点の数値が連続していない
はじめは百ミリ秒ごとに角度を調べてそのひとつ前の角度から引き算して
絶対値を取ればいいと単純に思ったけれど上の問題をどうするか考えなくてはいけない
また、どの場所で減点されたかが見てわかるようにもしたい
というようなことを考えて、鯉の軌跡を線分で書き
線分同士の角度を求める方法で実現できないか検討をする
このサイトのやり方がいいのかな(?ω?)
http://www.sousakuba.com/Programming/gs_two_vector_angle.html
ツイート
カーソルを追いかけるスプライト画像の動きを作る
#自機狙い弾の関数改
def jikinerai_tama(char_x, char_y, ememy_x, ememy_y, speed)
r = 0; x = 0; y = 0
r = (atan2((char_y- ememy_y ), (char_x - ememy_x )))
x = floor(cos(r) * speed)
y = floor(sin(r) * speed)
#ぶるぶるしないための処理
if (char_y- ememy_y ) > -speed -1 && (char_y- ememy_y) < speed +1
y = 0
elsif (char_x- ememy_x) > -speed -1 && (char_x- ememy_x) < speed +1
x = 0
end
ret_data = createArray()
ret_data[0] = x
ret_data[1] = y
return ret_data
end
########
##省略##
########
#動かすスプライトの初期座標
X = pos[x]
Y = pos[y]
loop = true
while loop
#自機の座標=マウスカーソルの現在位置の座標
char_x = input_mousex()
char_y = input_mousey()
#敵機の座標=動かすスプライトの座標
#速さ#お好みで #1だとうまくいかない
speed = 3
#X/Y方向の弾速の算出
ret_data = jikinerai_tama(char_x, char_y, X, Y, speed)
#戻り値の展開
speed_x = ret_data[0]
speed_y = ret_data[1]
X = X + speed_x
Y = Y + speed_y
setSpritePosition(getVariable(img_name), X, Y)
end
スプライトを中心を指定して回転させる関数と組み合わせたらより追いかけてる感がでた
目標地点を時間で区切って変えればランダム移動っぽくできるかもしれない
5/30追記
線を引く関数と組み合わせて、鯉の軌跡を表示できるように改変
鯉が急に曲がったかどうかを調べる関数を作るための準備
鯉を誘導する時に、なめらかに(小さな角度で少しずつ)方向転換できれば減点はなく
角度のついた方向転換は度合いによって-0.5、-1、-5など3段階の減点をしたい
鯉の進む方向を決めるのに使っているラジアンは始点と終点の数値が連続していない
はじめは百ミリ秒ごとに角度を調べてそのひとつ前の角度から引き算して
絶対値を取ればいいと単純に思ったけれど上の問題をどうするか考えなくてはいけない
また、どの場所で減点されたかが見てわかるようにもしたい
というようなことを考えて、鯉の軌跡を線分で書き
線分同士の角度を求める方法で実現できないか検討をする
このサイトのやり方がいいのかな(?ω?)
http://www.sousakuba.com/Programming/gs_two_vector_angle.html
コメントする
コメントするには、ログインする必要があります。
いい感じです~
ゆっくり近づくのがかわいいんですね、なるほど。