预测Python 2D空间中的一个点

时间:2015-05-24 00:58:55

标签: python vector 2d prediction

我正在使用python进行游戏,目前有两个"特工" DOESN' T MOVE和射击,另一个移动并被射击。很遗憾,我还无法发布图片。想象一下两个三角形的特工,子弹的红色圆圈。我们使用vector2D' s(我们的讲师类)代表代理商,我也将它用于子弹。

目前,我的代码会从射手那里产生子弹,但目标是在射击时逃避代理人的当前位置 - 而不是目标。不仅如此,它似乎也从对面生产子弹。

提前为糟糕的代码道歉 - 这是我目前正在拍的'功能呢。

def shoot(self, target_pos, target):
    ''' move towards target position '''

    toTarget = (self.targetpos - self.pos)
    relativeHeading = self.heading.dot(self.targetheading)

    lookAheadTime = toTarget.length() / (self.max_speed + 40)


    lookAheadTime += (1 - self.heading.dot(self.targetpos))* - self.max_turnrate
    lookAheadPos = self.targetpos + self.targetvelocity * lookAheadTime
    desired_vel = (lookAheadPos - self.pos).normalise() * self.max_speed
    print(lookAheadPos)
    trueVel = desired_vel - self.vel

    if (toTarget.dot(self.heading)>0) and (relativeHeading < 0.95):
        return trueVel
    return trueVel

这用于&#39;计算&#39;这是传递给&#39;更新&#39; (完成世界空间的每个更新步骤。)

 def calculate(self, delta, targetpos):
    # reset the steering force
    force = self.shoot(self.targetpos, self.world.agents[0])
    return force

以下是更新中发生的情况。目前,子弹也会产生一些奇怪的抖动。

 bulPos = (self.pos - self.targetpos).length()
    self.distCovered += 1

    if self.distCovered > 250:
       self.world.bullets.remove(self)
       self.world.bulletsize -= 1

    toTarget = self.targetpos - self.pos
    if toTarget.lengthSq() <= self.targetradius:
        self.explode()

在座席类中,项目符号的更新会附加项目符号。

  if self.world.bulletsize <= 10: 
        self.world.bullets.append(Bullet(self.world.hunter.pos.x, self.world.hunter.pos.y, self.world.agents[0], self.world))
        self.world.bulletsize += 1

0 个答案:

没有答案