如何使自上而下的赛车游戏背景向汽车相反的方向移动

Y2J

我正在制作一个自上而下的赛车游戏作为项目(我是 python 新手),我想知道如何让赛道(我已经制作背景)移动,这样当用户的汽车移动时,赛道基本上是朝着相反的方向移动,所以看起来你正在通过电路的过程。(摄像头对着用户的车)

谢谢

import math
import random

import pygame

pygame.mixer.pre_init(44100,16,2,4096)
pygame.init()
screen = pygame.display.set_mode((1280, 800))
rect = screen.get_rect()
clock = pygame.time.Clock()

#music
pygame.mixer.music.load("Wice.mp3")
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(-1)

WHITE = pygame.Color('white')
VEHICLE1 = pygame.Surface((40, 70), pygame.SRCALPHA)
VEHICLE1.fill((130, 180, 20))
#blitting car onto 'rectangle car'
VEHICLE1 = pygame.image.load("YellowLambo.png")
screen.blit(VEHICLE1,(0,0))
pygame.display.update()
VEHICLE2 = pygame.Surface((40, 70), pygame.SRCALPHA)
VEHICLE2.fill((200, 120, 20))
#blitting computer's car
VEHICLE2 = pygame.image.load("RedLambo.png")
screen.blit(VEHICLE2,(0,0))
pygame.display.update()
BACKGROUND = pygame.Surface((1280, 800))
BACKGROUND.fill((127, 69, 2))
BACKGROUND = pygame.image.load("track.png").convert()
screen.blit(BACKGROUND,(0,0))
pygame.display.update()


class Entity(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)


class VehicleSprite(Entity):
    MAX_FORWARD_SPEED = 10
    MAX_REVERSE_SPEED = 2
    ACCELERATION = 0.05
    TURN_SPEED = 0.000000000001

    def __init__(self, image, position):
        Entity.__init__(self)
        self.src_image = image
        self.image = image
        self.rect = self.image.get_rect(center=position)
        self.position = pygame.math.Vector2(position)
        self.velocity = pygame.math.Vector2(0, 0)
        self.speed = self.direction = 0
        self.k_left = self.k_right = self.k_down = self.k_up = 0

    def update(self, time):
        # SIMULATION
        self.speed += self.k_up + self.k_down
        # To clamp the speed.
        self.speed = max(-self.MAX_REVERSE_SPEED,
                         min(self.speed, self.MAX_FORWARD_SPEED))

        # Degrees sprite is facing (direction)
        self.direction += (self.k_right + self.k_left)
        rad = math.radians(self.direction)
        self.velocity.x = -self.speed*math.sin(rad)
        self.velocity.y = -self.speed*math.cos(rad)
        self.position += self.velocity
        self.image = pygame.transform.rotate(self.src_image, self.direction)
        self.rect = self.image.get_rect(center=self.position)


class Background(pygame.sprite.Sprite):

    def __init__(self, image, location):
        pygame.sprite.Sprite.__init__(self)
        self.image = image
        self.rect = self.image.get_rect(topleft=location)


def game_loop():
    background = Background(BACKGROUND, [0, 0])
    bike = VehicleSprite(VEHICLE1, rect.center)
    ball = VehicleSprite(VEHICLE2, rect.center)

    bike_group = pygame.sprite.Group(bike)
    ball_group = pygame.sprite.Group(ball)
    all_sprites = pygame.sprite.Group(bike_group, ball_group)

    camera = pygame.math.Vector2(0, 0)
    done = False

    while not done:
        time = clock.tick(60)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True
            elif event.type == pygame.KEYDOWN:
                # Bike Input (Player 1)
                if event.key == pygame.K_d:
                    bike.k_right = -5
                elif event.key == pygame.K_a:
                    bike.k_left = 5
                elif event.key == pygame.K_w:
                    bike.k_up = 2
                elif event.key == pygame.K_s:
                    bike.k_down = -2

                elif event.key == pygame.K_ESCAPE:
                    done = True
            elif event.type == pygame.KEYUP:
                if event.key == pygame.K_d:
                    bike.k_right = 0
                elif event.key == pygame.K_a:
                    bike.k_left = 0
                elif event.key == pygame.K_w:
                    bike.k_up = 0
                elif event.key == pygame.K_s:
                    bike.k_down = 0

        camera -= bike.velocity

        all_sprites.update(time)

        screen.fill(WHITE)
        screen.blit(background.image, background.rect)

        for sprite in all_sprites:
            screen.blit(sprite.image, sprite.rect.topleft+camera)

        pygame.display.flip()


game_loop()
pygame.quit()
skrx

只需将camera向量添加background.rect.topleft位置:

screen.blit(background.image, background.rect.topleft+camera)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使我的js滑块向相反方向移动?

来自分类Dev

当我想使用键盘上的箭头向相反方向行驶时,该如何使汽车转弯

来自分类Dev

如何在 LibGdx 中为自上而下的游戏扩展背景?

来自分类Dev

赛车游戏:根据是否开/关来改变汽车运动

来自分类Dev

如何确保精灵在 2D 自上而下的游戏中始终面向正确的方向。(逻辑)

来自分类Dev

如何将颜色的色调向相反方向移动

来自分类Dev

避免jQuery UI可调整大小的“ alsoResize”向相反方向移动

来自分类Dev

我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

来自分类Dev

我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

来自分类Dev

您如何使汽车向其朝向移动?(使用python和turtle图形)

来自分类Dev

使精灵沿矢量的相反方向移动

来自分类Dev

D3.js如何使用基本SVG元素向相反方向过渡

来自分类Dev

D3.js如何使用基本SVG元素向相反方向过渡

来自分类Dev

如何在Android上向正确的方向移动旋转的视图?

来自分类Dev

如何将球向不同方向移动?

来自分类Dev

如何在相反方向垂直移动两个列表

来自分类Dev

如何在Shiny中包含2个沿相反方向移动的滑块?

来自分类Dev

SpriteKit Racing自上而下的游戏

来自分类Dev

如何在一个方向上移动立方体3秒钟,然后在相反的方向上移动3秒,或者

来自分类Dev

如何使英雄滑块始终向同一方向移动

来自分类Dev

精灵正在碰撞,但球不会向相反方向反弹

来自分类Dev

jQuery window.scroll在相反方向垂直移动div

来自分类Dev

Nokogiri从节点(每个父节点)沿相反方向移动

来自分类Dev

如何从Python向游戏发送方向盘/操纵杆输入?

来自分类Dev

如何在另一个游戏对象Unity3D的前移方向上移动游戏对象

来自分类Dev

如果方向相反,该如何编写代码?

来自分类Dev

汽车游戏的建筑玩家

来自分类Dev

使物体不断向某个方向移动

来自分类Dev

在python中为赛车游戏计算距离

Related 相关文章

  1. 1

    如何使我的js滑块向相反方向移动?

  2. 2

    当我想使用键盘上的箭头向相反方向行驶时,该如何使汽车转弯

  3. 3

    如何在 LibGdx 中为自上而下的游戏扩展背景?

  4. 4

    赛车游戏:根据是否开/关来改变汽车运动

  5. 5

    如何确保精灵在 2D 自上而下的游戏中始终面向正确的方向。(逻辑)

  6. 6

    如何将颜色的色调向相反方向移动

  7. 7

    避免jQuery UI可调整大小的“ alsoResize”向相反方向移动

  8. 8

    我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

  9. 9

    我将如何使汽车沿其指向的方向移动(使用pygame.translation.rotate之后)

  10. 10

    您如何使汽车向其朝向移动?(使用python和turtle图形)

  11. 11

    使精灵沿矢量的相反方向移动

  12. 12

    D3.js如何使用基本SVG元素向相反方向过渡

  13. 13

    D3.js如何使用基本SVG元素向相反方向过渡

  14. 14

    如何在Android上向正确的方向移动旋转的视图?

  15. 15

    如何将球向不同方向移动?

  16. 16

    如何在相反方向垂直移动两个列表

  17. 17

    如何在Shiny中包含2个沿相反方向移动的滑块?

  18. 18

    SpriteKit Racing自上而下的游戏

  19. 19

    如何在一个方向上移动立方体3秒钟,然后在相反的方向上移动3秒,或者

  20. 20

    如何使英雄滑块始终向同一方向移动

  21. 21

    精灵正在碰撞,但球不会向相反方向反弹

  22. 22

    jQuery window.scroll在相反方向垂直移动div

  23. 23

    Nokogiri从节点(每个父节点)沿相反方向移动

  24. 24

    如何从Python向游戏发送方向盘/操纵杆输入?

  25. 25

    如何在另一个游戏对象Unity3D的前移方向上移动游戏对象

  26. 26

    如果方向相反,该如何编写代码?

  27. 27

    汽车游戏的建筑玩家

  28. 28

    使物体不断向某个方向移动

  29. 29

    在python中为赛车游戏计算距离

热门标签

归档