版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/Hubz131/article/details/86767814
下面这个例子,使用向量代替之前的x和y的计算,实现了鱼在鼠标周围游动的效果。
使用向量类来存储和计算向量。(gameobjects、gameobjects的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()