mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-02-06 07:23:37 +08:00
Fixed bots' AI
This commit is contained in:
parent
ac7d79c7bf
commit
defbcd1e55
@ -42,8 +42,7 @@ DEFAULT_BOT_HIGHLIGHT = (0.1, 0.3, 0.1)
|
|||||||
PRO_BOT_COLOR = (1.0, 0.2, 0.1)
|
PRO_BOT_COLOR = (1.0, 0.2, 0.1)
|
||||||
PRO_BOT_HIGHLIGHT = (0.6, 0.1, 0.05)
|
PRO_BOT_HIGHLIGHT = (0.6, 0.1, 0.05)
|
||||||
|
|
||||||
def _my_vec3_dist(vec1: Tuple[float], vec2: Tuple[float]) -> float:
|
def distance(vec1: Tuple[float], vec2: Tuple[float]) -> float:
|
||||||
# FIXME - this solution works,
|
|
||||||
xlen = vec1[0] - vec2[0]
|
xlen = vec1[0] - vec2[0]
|
||||||
ylen = vec1[1] - vec2[1]
|
ylen = vec1[1] - vec2[1]
|
||||||
zlen = vec1[2] - vec2[2]
|
zlen = vec1[2] - vec2[2]
|
||||||
@ -200,7 +199,7 @@ class SpazBot(basespaz.Spaz):
|
|||||||
closest = None
|
closest = None
|
||||||
assert self._player_pts is not None
|
assert self._player_pts is not None
|
||||||
for plpt, plvel in self._player_pts:
|
for plpt, plvel in self._player_pts:
|
||||||
dist = _my_vec3_dist((plpt.x, plpt.y, plpt.z), (botpt.x, botpt.y, botpt.z))
|
dist = distance((plpt.x, plpt.y, plpt.z), (botpt.x, botpt.y, botpt.z))
|
||||||
|
|
||||||
# Ignore player-points that are significantly below the bot
|
# Ignore player-points that are significantly below the bot
|
||||||
# (keeps bots from following players off cliffs).
|
# (keeps bots from following players off cliffs).
|
||||||
@ -264,7 +263,7 @@ class SpazBot(basespaz.Spaz):
|
|||||||
target_pt_raw = ba.Vec3(*self.target_flag.node.position)
|
target_pt_raw = ba.Vec3(*self.target_flag.node.position)
|
||||||
diff = (target_pt_raw - our_pos)
|
diff = (target_pt_raw - our_pos)
|
||||||
diff = ba.Vec3(diff[0], 0, diff[2]) # don't care about y
|
diff = ba.Vec3(diff[0], 0, diff[2]) # don't care about y
|
||||||
dist = diff.length()
|
dist = distance((target_pt_raw.x, 0, target_pt_raw.z), (our_pos.x, 0, our_pos.z))
|
||||||
to_target = diff.normalized()
|
to_target = diff.normalized()
|
||||||
|
|
||||||
# If we're holding some non-flag item, drop it.
|
# If we're holding some non-flag item, drop it.
|
||||||
@ -332,7 +331,7 @@ class SpazBot(basespaz.Spaz):
|
|||||||
target_vel * dist_raw * 0.3 * self._lead_amount)
|
target_vel * dist_raw * 0.3 * self._lead_amount)
|
||||||
|
|
||||||
diff = (target_pt - our_pos)
|
diff = (target_pt - our_pos)
|
||||||
dist = _my_vec3_dist((target_pt.x, target_pt.y, target_pt.z), (our_pos.x, our_pos.y, our_pos.z))
|
dist = distance((target_pt.x, target_pt.y, target_pt.z), (our_pos.x, our_pos.y, our_pos.z))
|
||||||
to_target = diff.normalized()
|
to_target = diff.normalized()
|
||||||
|
|
||||||
if self._mode == 'throw':
|
if self._mode == 'throw':
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user