Пример #1
0
    def __init__(self, game, pos, vel):
        self.initCordPos = numpy.array([pos[0], pos[1]])
        line = game.segLine
        lineLen = 0
        prevPoint = line[0]
        self.initNum = 0
        for point in line:
            norm = numpy.linalg.norm(point - prevPoint)
            if pos[0] >= lineLen and pos[0] < lineLen + norm:
                ldirec = (point - prevPoint) / norm
                rdirec = numpy.array([ldirec[1], -ldirec[0]])
                post = prevPoint + (pos[0] -
                                    lineLen) * ldirec + rdirec * pos[1]
                self.initPos = Vec3(post[0], post[1], pos[2])
                break
            lineLen = lineLen + norm
            prevPoint = point
            self.initNum = self.initNum + 1
        chassis = setChassis(game, self.initPos, vel)
        BulletVehicle.__init__(self, game.world, chassis.node())
        self.setCoordinateSystem(ZUp)
        game.world.attachVehicle(self)
        self.yugoNP = loader.loadModel('models/yugo/yugo.egg')
        self.yugoNP.reparentTo(chassis)

        # Right front wheel
        np = loader.loadModel('models/yugo/yugotireR.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(0.70, 1.05, 0.3), True, np)

        # Left front wheel
        np = loader.loadModel('models/yugo/yugotireL.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(-0.70, 1.05, 0.3), True, np)

        # Right rear wheel
        np = loader.loadModel('models/yugo/yugotireR.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(0.70, -1.05, 0.3), False, np)

        # Left rear wheel
        np = loader.loadModel('models/yugo/yugotireL.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(-0.70, -1.05, 0.3), False, np)

        # Steering info
        self.steering = 0.0  # degree
        self.steeringClamp = 45.0  # degree
        self.steeringIncrement = 10.0  # degree per second
Пример #2
0
  def __init__(self,game,pos,vel):
    self.initCordPos=numpy.array([pos[0],pos[1]])
    line=game.segLine
    lineLen=0
    prevPoint=line[0]
    self.initNum=0
    for point in line:
      norm=numpy.linalg.norm(point-prevPoint)
      if pos[0]>=lineLen and pos[0]<lineLen+norm:
        ldirec=(point-prevPoint)/norm
        rdirec=numpy.array([ldirec[1],-ldirec[0]])
        post=prevPoint+(pos[0]-lineLen)*ldirec+rdirec*pos[1]
        self.initPos=Vec3(post[0],post[1],pos[2])
        break
      lineLen=lineLen+norm
      prevPoint=point
      self.initNum=self.initNum+1
    chassis=setChassis(game,self.initPos,vel)
    BulletVehicle.__init__(self,game.world,chassis.node())
    self.setCoordinateSystem(ZUp)
    game.world.attachVehicle(self)
    self.yugoNP = loader.loadModel('models/yugo/yugo.egg')
    self.yugoNP.reparentTo(chassis)

    # Right front wheel
    np = loader.loadModel('models/yugo/yugotireR.egg')
    np.reparentTo(game.worldNP)
    self.addWheel(Point3( 0.70,  1.05, 0.3), True, np)

    # Left front wheel
    np = loader.loadModel('models/yugo/yugotireL.egg')
    np.reparentTo(game.worldNP)
    self.addWheel(Point3(-0.70,  1.05, 0.3), True, np)

    # Right rear wheel
    np = loader.loadModel('models/yugo/yugotireR.egg')
    np.reparentTo(game.worldNP)
    self.addWheel(Point3( 0.70, -1.05, 0.3), False, np)

    # Left rear wheel
    np = loader.loadModel('models/yugo/yugotireL.egg')
    np.reparentTo(game.worldNP)
    self.addWheel(Point3(-0.70, -1.05, 0.3), False, np)

    # Steering info
    self.steering = 0.0            # degree
    self.steeringClamp = 45.0      # degree
    self.steeringIncrement = 10.0  # degree per second
Пример #3
0
    def __init__(self, game, pos, vel, length, width, height, axisDis,
                 wheelDis, radius, wheelH):
        self.initCordPos = numpy.array([pos[0], pos[1]])
        '''self.length=length
    self.width=width
    self.height=height
    self.axisDis=axisDis
    self.wheelDis=wheelDis
    self.radius=radius
    self.wheelH=wheelH'''
        line = game.segLine
        lineLen = 0
        prevPoint = line[0]
        self.initNum = 0
        for point in line:
            norm = numpy.linalg.norm(point - prevPoint)
            if pos[0] >= lineLen and pos[0] < lineLen + norm:
                ldirec = (point - prevPoint) / norm
                rdirec = numpy.array([ldirec[1], -ldirec[0]])
                post = prevPoint + (pos[0] -
                                    lineLen) * ldirec + rdirec * pos[1]
                self.initPos = Vec3(post[0], post[1], pos[2])
                break
            lineLen = lineLen + norm
            prevPoint = point
            self.initNum = self.initNum + 1
        chassis = setChassis(game, self.initPos, vel, length, width, height)
        BulletVehicle.__init__(self, game.world, chassis.node())
        self.setCoordinateSystem(ZUp)
        game.world.attachVehicle(self)
        #self.yugoNP = loader.loadModel('models/yugo/yugo.egg')
        self.yugoNP = loader.loadModel('models/car.egg')
        self.yugoNP.reparentTo(chassis)

        # Right front wheel
        np = loader.loadModel('models/yugo/yugotireR.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(wheelDis / 2, axisDis / 2, wheelH), True, np,
                      radius)

        # Left front wheel
        np = loader.loadModel('models/yugo/yugotireL.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(-wheelDis / 2, axisDis / 2, wheelH), True, np,
                      radius)

        # Right rear wheel
        np = loader.loadModel('models/yugo/yugotireR.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(wheelDis / 2, -axisDis / 2, wheelH), False, np,
                      radius)

        # Left rear wheel
        np = loader.loadModel('models/yugo/yugotireL.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(-wheelDis / 2, -axisDis / 2, wheelH), False, np,
                      radius)

        # Steering info
        self.steering = 0.0  # degree
        self.steeringClamp = 45.0  # degree
        self.steeringIncrement = 10.0  # degree per second
Пример #4
0
    def __init__(self, game, v_id, pos, vel, length, width, height, axisDis,
                 wheelDis, radius, wheelH):
        self.initCordPos = numpy.array([pos[0], pos[1]])
        '''self.length=length
    self.width=width
    self.height=height
    self.axisDis=axisDis
    self.wheelDis=wheelDis
    self.radius=radius
    self.wheelH=wheelH'''

        self.id = v_id

        line = game.segLine
        lineLen = 0
        prevPoint = line[0]
        self.initNum = 0
        for point in line:
            norm = numpy.linalg.norm(point - prevPoint)
            if pos[0] >= lineLen and pos[0] < lineLen + norm:
                ldirec = (point - prevPoint) / norm
                rdirec = numpy.array([ldirec[1], -ldirec[0]])
                post = prevPoint + (pos[0] -
                                    lineLen) * ldirec + rdirec * pos[1]
                self.initPos = Vec3(post[0], post[1], pos[2])
                break
            lineLen = lineLen + norm
            prevPoint = point
            self.initNum = self.initNum + 1
        chassis = setChassis(game, self.initPos, vel, length, width, height)
        BulletVehicle.__init__(self, game.world, chassis.node())
        self.setCoordinateSystem(ZUp)
        game.world.attachVehicle(self)

        ###
        if length < 17:
            v_type = 'car'
        elif length < 19:
            v_type = 'suv'
        elif length < 25:
            v_type = 'truck'
        else:
            v_type = 'bus'
        self.yugoNP = loader.loadModel('models/low_poly_cars_set/' + v_type +
                                       '.obj')
        nn = str(numpy.random.randint(3))
        tex = loader.loadTexture('models/low_poly_cars_set/tex/' + v_type +
                                 '_' + nn + '.png')
        self.yugoNP.setTexture(tex, 1)
        ###

        # self.yugoNP = loader.loadModel('models/yugo/yugo.egg')
        min, max = self.yugoNP.getTightBounds()
        size = max - min
        self.yugoNP.setSx(width / size[0])
        self.yugoNP.setSy(length / size[1])
        self.yugoNP.setSz(width / size[0])

        min, max = self.yugoNP.getTightBounds()
        self.yugoNP.setPos(-(min + max) / 2)
        self.yugoNP.setZ(-min[2])

        self.yugoNP.reparentTo(chassis)

        # Right front wheel
        np = loader.loadModel('models/yugo/yugotireR.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(wheelDis / 2, axisDis / 2, wheelH), True, np,
                      radius)

        # Left front wheel
        np = loader.loadModel('models/yugo/yugotireL.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(-wheelDis / 2, axisDis / 2, wheelH), True, np,
                      radius)

        # Right rear wheel
        np = loader.loadModel('models/yugo/yugotireR.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(wheelDis / 2, -axisDis / 2, wheelH), False, np,
                      radius)

        # Left rear wheel
        np = loader.loadModel('models/yugo/yugotireL.egg')
        np.reparentTo(game.worldNP)
        self.addWheel(Point3(-wheelDis / 2, -axisDis / 2, wheelH), False, np,
                      radius)

        # Steering info
        self.steering = 0.0  # degree
        self.steeringClamp = 45.0  # degree
        self.steeringIncrement = 10.0  # degree per second