HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1006
SP文字の移動4未解決


SP

リンク

2007/10/6(Sat) 20:04:09|NO.11530

マウスでクリックした場所に、「A」という文字が徐々に移動させるには
どうすればいいですか??
教えてくださいm(__)m

screen 0,640,480 x=400:y=400 repeat redraw 0 color 255,255,255:boxf color 0,0,0 pos x,y:mes "A" redraw 1 wait 1 loop



この記事に返信する


ライセン

リンク

2007/10/6(Sat) 20:38:37|NO.11531

クリックしたところが前より上だったらyを毎回-1していき、同じになったらやめ。



SM

リンク

2007/10/6(Sat) 21:21:26|NO.11533

ベクトルとか距離とかの求め方は中学生になったら習うのかな?
ゲームには必須なので覚えて損はないですよ。

px = 0.0 ; 現在の座標 py = 0.0 ; 現在の座標 cx = 0.0 ; 目標の座標 cy = 0.0 ; 目標の座標 vx = 0.0 ; 現在と目標のベクトル vy = 0.0 ; 現在と目標のベクトル r = 10.0 ; 最低限の距離 speed = 2.0 ; 進む速度 *main ; クリック待ち stick key, , 1 if ( key & 256 ) { ; 目標座標を保存 cx = double( mousex ) cy = double( mousey ) } ; 現在と目標の差を求める ; ベクトルの求め方は 目標-現在 = ベクトル . vx = cx-px vy = cy-py ; 距離の計算 dist = sqrt( ( vx*vx )+( vy*vy ) ) ; 移動処理 if ( dist > r ) { ; もし dist が r より大きいなら ; ベクトルを正規化(0〜1の間で表現)する nx = vx/dist ny = vy/dist ; 現在から目標へ足す px = px+( speed*nx ) py = py+( speed*ny ) } ; 表示 redraw 0 color 0, 0, 0 : boxf color 255, 0, 0 : pos px, py : mes "A" redraw 1 wait 1 goto *main



xxxz

リンク

2007/10/6(Sat) 22:15:57|NO.11534

もしベクトルについて理解できないのなら
下のスクリプトで我慢する。


screen 0,640,480 x=400:y=400:xx=x:yy=y repeat redraw 0 color 255,255,255:boxf color 0,0,0 pos x,y:mes "A" stick key if key=256 : xx=mousex : yy=mousey if x<xx : x++ if y<yy : y++ if x>xx : x-- if y>yy : y-- redraw 1 wait 1 loop



リンク

2007/10/7(Sun) 00:09:29|NO.11536

atanつかう
簡単な追跡例

x=0.0 : y=0.0 ;自分の位置 mx=400.0 : my=300.0 ;目標位置 speed=3.0 temp=atan(my-y,mx-x) x=x+speed*cos(temp) y=y+speed*sin(temp)



ONION software Copyright 1997-2023(c) All rights reserved.