※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

ユニット間の角度を求めるサブルーチン


ある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