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


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0523
M−y2点の間の距離を求める方法7未解決


M−y

リンク

2014/5/23(Fri) 22:07:29|NO.62146

シューティングゲームを作るとき、点Aと点Bの間の距離が20とか30で命中にしたいです
新規関数でどうすればいいですか???



この記事に返信する


FunnyMaker

リンク

2014/5/23(Fri) 22:45:34|NO.62148

2点の座標は分かっているんですよね。
それならあとは計算です。単純な式なので新規関数として定義するまでもないでしょう。

ピタゴラスの定理で検索してみましょう。
(いつ頃習うものだったかな...?)



cats

リンク

2014/5/23(Fri) 23:04:14|NO.62149

hspmathに命令があります。
まずは調べる癖をつけて、どうしても分からないときだけ質問しましょう。
自作関数にするにしても、特にこのような簡単な内容は
まず自分で考えてみてください。

#include "hspmath.as" point_a = 100, 50 // 点A point_b = 500, 400 // 点B mes "2点間の距離は" + distance2(point_a, point_b) + "です。" line point_a(0), point_a(1), point_b(0), point_b(1) color 255 : pset point_a(0), point_a(1) // 点A color ,255 : pset point_b(0), point_b(1) // 点B stop



M−y

リンク

2014/5/24(Sat) 18:44:53|NO.62165

その、簡単な式が分かりません。
if x1:y1,x2:y2>50
みたいな感じでしたらエラーが出ます。
いッパン的なパラメーターが…
手やつです



FunnyMaker

リンク

2014/5/24(Sat) 19:13:15|NO.62167

>その、簡単な式が分かりません。

数学の教科書でも探しましたか?

しょうがないので教えますが...。

直交座標系上の2点A(xa,ya),B(xb,yb)の距離dは次式で与えられます。

d = sqrt( (xa-xb)^2 + (ya-yb)^2 )

sqrtは平方根を表し、^はべき乗を表します。例えばxの2乗ならx^2です。

証明は大したことはありません。
それより、三平方の定理を知った後に方眼用紙と鉛筆と定規を用意して格子点に2点をとってそれを結ぶ線分を斜辺とする直角三角形を描きまくってみましょう。
きっと上式の意味が分かりますよ。


>if x1:y1,x2:y2>50 みたいな感じでしたらエラーが出ます。

HSPの文法が分かっていないのではないですか?
その行は
if sqrt(powf(x1-x2,2)+powf(y1-y2,2)) > 50
とするべきです。



ZAP

リンク

2014/5/24(Sat) 19:13:27|NO.62168

とりあえずサンプルスクリプトをみながら一通り基本を勉強することを強く勧めます。

そうでないと、つまづくたんびに質問だらけになってしまい
質問者も回答者もシアワセになれませんので。

ちなみにプラグインを使わずに標準命令だけで
2点間の距離を用いた当たり判定したいのならば、
ルートを使わないように両辺を二乗して判定する方法があります。


dx=X1-X2 ;X方向の差分を求める dy=Y1-Y2 ;Y方向の差分を求める if dx*dx + dy*dy < 50*50 {  (ここに当たったときの処理を書く) }

といった感じです。



GENKI

リンク

2014/5/25(Sun) 02:31:56|NO.62172

ピタゴラスの定理で検索してもちょっとむずかしい話ばっかりでよくわからないような気がします。
「三平方の定理」は中学3年の数学で学習する範囲のようです。
もし教科書をお持ちなら開いてみてください。
持ってないならGoogleなどで検索してみてください。図入りの解説がいくつか見つかります。

それでも理解できないならdistance2を使うことをおすすめします。
仕組みがわからなければパッケージ化されたものをそのまま使えばいいんですよ。(もちろん理解して使うのが一番いいのですが。)


でももし授業で習ったのに忘れてしまった、理解できなかった、ついていけなかった。
というのでしたら数学の復習を強くおすすめします。あれはこれから必要になる強力な武器です。



新入り

リンク

2014/5/25(Sun) 02:48:41|NO.62173

直角三角形の斜辺の長さは、「底辺の二乗+高さの二乗」の平方根。
それを利用して斜めの距離を割り出すのが、ZAPさん方が書いている方法。


r=100 ;半径 ang=0.0 ;角度 ox=ginfo_winx/2.0 ;中心x oy=ginfo_winy/2.0 ;中心y repeat vx=ox+cos(ang)*r ;頂点x vy=oy+sin(ang)*r ;頂点y ang+=0.01 ;角度を加算 color 255,255,255 : boxf : color circle ox-r,oy-r,ox+r,oy+r,0 line ox,oy,vx,vy line ox,oy,vx,oy line ox,oy,ox,vy line vx,oy,vx,vy line ox,vy,vx,vy await 10 : redraw 1 : redraw 0 loop

蛇足感否めないけど作りたかったんです。



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