一定の距離を保って移動する方法
投稿者 | いの |
---|---|
重要度 | |
状態 | |
カテゴリ | |
HSPバージョン | 3.1 |
E3Dバージョン | 5033 |
回答 |
ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。
- 移動する物体1と距離を保って移動させたい物体2があるのですが
x,y座標での移動はうまくいくのですが、これにz座標を加える方法がわかりません。
下のスクリプトは、サンプルのスライムを読み込んで、
カーソルキーでスライム1を移動し、スライム2は、お互いの距離が一定以上離れると
スライム1の方向に近づくというものですが、これにz軸での動きを加えるにはどうすればよいのでしょう?
x,yをx,zに変えると、今度はy座標の動かし方がわかりません。よろしくお願いします。
#include "e3dhsp3.as" #module #deffunc waitbyfps int p1, var fps E3DWaitbyFPS@ p1, fps await 0 return #global dim keybuf, 256 title "左右キーでX移動 上下キーでY移動 シフト+上下キーでZ移動" E3DInit 0, -1, 0, 16, 0, scid1 // カメラの初期化 E3DSetCameraPos 0,0,4000 // mediaフォルダのスライム読み込み E3DSigLoad "media\\slime25.sig", hsid1 x = 0.0 : y = 0.0 : z = 0.0 ; スライム1の座標 x2 = 0.0 : y2 = 0.0 : x = 0.0 ; スライム2の座標 *main E3DGetKeyboardState keybuf if keybuf.VK_ESCAPE = 1 : goto *bye ; [ESC]で終了 getkey shift,16 ; キー入力でスライム1移動 stick in,15 if in & 1 : x+10.0 if in & 4 : x-10.0 if in & 2 : if shift : z-10.0 : else : y+10.0 if in & 8 : if shift : z+10.0 : else : y-10.0 a = x2-x : b = y2-y : c = z2-z ; スライム同士の距離 aida = sqrt(a*a + b*b + c*c) if aida > 600.0 { ; お互いの距離が600.0以上離れたらスライム2が近づく kakudo = atan((x2-x),(y2-y)) ; 角度 x2 = x + sin(kakudo) * 600.0 y2 = y + cos(kakudo) * 600.0 } E3DBeginScene scid1 E3DSetPos hsid1, x,y,z : E3DChkInView scid1, hsid1 ; スライム1 E3DRender scid1, hsid1, 0,0,0,0,0 E3DSetPos hsid1, x2,y2,z2 : E3DChkInView scid1, hsid1 ; スライム2 E3DRender scid1, hsid1, 0,0,0,0,0 E3DEndScene : E3DPresent scid1 waitbyfps 60, chkfps1 goto *main *bye E3DBye end
- いの?