PyGame向量

版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/Hubz131/article/details/86767814

下面这个例子,使用向量代替之前的x和y的计算,实现了鱼在鼠标周围游动的效果。

使用向量类来存储和计算向量。(gameobjectsgameobjects的CSDN资源)

# -*- coding: utf-8 -*- 
# Time : 2019/2/3 14:46 
# Author : hubozhi
import pygame
from pygame.locals import *
from sys import exit
from gameobjects import vector2

background_image = './image/sushiplate.jpg'
sprite_image = './image/fugu.png'

if __name__ == "__main__":
    pygame.init()
    screen = pygame.display.set_mode((640, 480), 0, 32)
    background = pygame.image.load(background_image).convert()
    sprite = pygame.image.load(sprite_image)
    clock = pygame.time.Clock()
    heading = vector2.Vector2((50,50))
    position = vector2.Vector2(20.0,20.0)

    while True:
        for event in pygame.event.get():
            if event.type == QUIT:
                exit()

        screen.blit(background, (0, 0))
        screen.blit(sprite, position)

        time_passed = clock.tick(200)
        time_passed_seconds = time_passed / 1000

        # 在参数前面加*意味着把列表或元组展开
        destination = vector2.Vector2(*pygame.mouse.get_pos()) - vector2.Vector2(*sprite.get_size()) / 2
        # 计算当鱼儿当前位置到鼠标位置的向量
        vector_to_mouse = vector2.Vector2.__sub__(destination, position)
        vector_to_mouse.normalize()
        # heading可以看做是鱼的速度,鱼的速度大小、方向不断改变

        heading = heading + (vector_to_mouse * 0.1)
        position += heading * time_passed_seconds
        pygame.display.update()

猜你喜欢

转载自blog.csdn.net/Hubz131/article/details/86767814