一定の距離を保って移動する方法
| 投稿者 | いの |
|---|---|
| 重要度 | #listbox3: listbox3プラグインは廃止されました。 |
| 状態 | #listbox3: listbox3プラグインは廃止されました。 |
| カテゴリ | #listbox3: listbox3プラグインは廃止されました。 |
| HSPバージョン | 3.1 |
| E3Dバージョン | 5033 |
| 回答 | #listbox3: listbox3プラグインは廃止されました。 |
ここから下を自由に編集してください。
上の投稿情報は安易に編集すると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
- いの?
