コンテンツにスキップ

近づいて、止まって撃つ

敵が遠いあいだは近づき、ちょうどいい距離になったら止まって撃つタンクを作ります。

第 3 章までに手に入る部品で作れます。

かんたんブロックの並び:遠いあいだは近づき、近くなったら止まって撃つ

「📏 敵が近い(ふつう)」(6 マスより近い)なら止まり、そうでなければ進みます。「そうでなければ」は第 3 章で手に入ります。

ブロックは、上から順に、0.1 秒ごとに読まれます(まちがえやすい 4 つのルール)。

同じ作戦を、Python で書くとこうなります。ブロックになれたら、文字でも書いてみましょう。

距離で「進む」と「止まる」を切り替える
def update(state):
me = state.me
en = state.enemy
want = angle_to(me.x, me.y, en.x, en.y)
d = distance(me.x, me.y, en.x, en.y)
合っている = abs(angle_diff(want, me.angle)) < 5
# 5 マスより遠いあいだは進む。近づいたら止まる。
if d > 5:
drive = "forward"
else:
drive = "stop"
return {"drive": drive, "steer": want, "fire": 合っている, "barrier": False}
  • distance が、2 点の距離(マス)を返します
  • d が 5 より大きいか」で、drive を切り替えます
  • 向きは、いつも敵のほうへ直しつづけます

体と砲身はいっしょに回ります。 そのため「近づくあいだも、敵のほうを向いている」ことになり、進みながら撃てます。 逆に、逃げながら撃つことは、基本的にできません(タンクのうごかしかた)。

  • 538 に変えてみましょう。近づきすぎるほど、敵の弾も当たりやすくなります
  • 敵の弾に当たる回数は、分析画面の「被弾ヒートマップ」で見られます
  • 止まらずに、ずっと動く。 d > 5 の向き(><)を確かめましょう
  • 壁にひっかかって、進めない。 直線に進むだけでは、壁をよけられません → 見えない敵を探す