カーソルを追いかける

投稿者:            mini mosmoss 投稿日:2016/05/17 03:21

aoihikawaさんの自機狙い弾のスクリプトを使って
カーソルを追いかけるスプライト画像の動きを作る

#自機狙い弾の関数改
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

コメントする

コメントするには、ログインする必要があります。

コメント一覧

      mini ✰❁ゆっくりんご❁✰(投稿日:2016/05/21 20:07, 履歴)
鯉さんがゆっくりとカーソルの近づくのが可愛い!
いい感じです~
            mini mosmoss(投稿日:2016/05/21 22:06, 履歴)
ありがとうございます∈( ‘Θ’ )∋
ゆっくり近づくのがかわいいんですね、なるほど。
Cdv30200 aoi icon mini aoihikawa(投稿日:2016/05/18 18:41, 履歴)
面白いアレンジ例ですね

それっぽい感じが
よく出てます
            mini mosmoss(投稿日:2016/05/18 20:16, 履歴)
ありがとうございます(^ω^ っ)3