木有错!又是一款足球射门游戏!Box2D物理引擎游戏《王牌射手》他来了!

起因

之前作者借着CocosCreator得3D性能和官方活动,开发了一款点球大战得3D射门游戏。既然3D都来了,那么2D得射门游戏《王牌射手》也是如期而至了!(掌声鼓励)

游戏地址

体验地址:王牌射手体验
源码地址:王牌射手源码

游戏介绍

以作者本身得能力,游戏得策划当然是需要抄袭 ,是借鉴呀 ,借鉴了微信小游戏**《天天足球》**得玩法。简单得介绍下玩法:就是足球会于场中得球员发生碰撞,如果球员碰到了我方球员,球员会90°以内左右旋转,玩家点击屏幕发射足球,在固定得发球数量内,达到进球门槛即判定为过关呀。
在这里插入图片描述
在这里插入图片描述
那么有的朋友就会问了,你这写的都是啥呀,我看不懂呀。那么您可以点击王牌射手或者微信小游戏搜索《天天足球》即可体验~

游戏开发

这款足球得玩法相对来说算是比较经典得物理游戏,所以游戏中使用了CocosCreator中自带得Box2d系统。

在测试过程可以使用绘制调制信息来查看游戏是否有问题。

PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb |
        EPhysics2DDrawFlags.Pair |
        EPhysics2DDrawFlags.CenterOfMass |
        EPhysics2DDrawFlags.Joint |
        EPhysics2DDrawFlags.Shape;

通过Box2D中得碰撞事件回调来对球碰到了不同得人物进行处理。在回调中会设置一些刚体得问题代码会报错。所以每次碰撞之后,都需要有一个简单得延时在设置刚体相关得信息。

PhysicsSystem2D.instance.on(Contact2DType.BEGIN_CONTACT, this.BeginContact, this);
**
 * 刚开始碰撞回调
 * @param 碰撞体1
 * @param 碰撞体2
 * @param 碰撞信息
 */
private BeginContact(_selfCollider: Collider2D, _otherCollider: Collider2D, _contact: IPhysics2DContact | null) {
   

    //根据情况确认碰撞体
    let ball_collider: Collider2D = _otherCollider.node.name === Global.HitBodyName.Ball ? _otherCollider : _selfCollider;
    let else_collider: Collider2D = _otherCollider.node.name === Global.HitBodyName.Ball ? _selfCollider : _otherCollider;
    switch (else_collider.node.name) {
   
        case Global.HitBodyName.GoalHit:
            setTimeout(() => {
   
                GameScene.instance.ResetRound(true);
            }, 10);
            break;
        
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
当然可以!以下是一个简单的示例代码,展示了如何使用Pygame创建一个足球点球游戏,包括守门员和射门者。 首先,确保已安装Pygame库。你可以使用以下命令安装它: ``` pip install pygame ``` 接下来,创建一个名为`football_game.py`的新文件,并将以下代码复制到文件中: ```python import pygame import random # 初始化Pygame pygame.init() # 游戏窗口尺寸 WIDTH = 800 HEIGHT = 400 # 颜色定义 WHITE = (255, 255, 255) BLUE = (0, 0, 255) RED = (255, 0, 0) # 创建游戏窗口 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("足球点球游戏") clock = pygame.time.Clock() # 球门 goal_width = 100 goal_height = 200 goal_x = WIDTH - goal_width - 10 goal_y = HEIGHT // 2 - goal_height // 2 # 球门的矩形 goal_rect = pygame.Rect(goal_x, goal_y, goal_width, goal_height) # 球门线 goal_line_thickness = 5 # 球门线的矩形 goal_line_rect = pygame.Rect(goal_x - goal_line_thickness, goal_y - goal_line_thickness, goal_width + 2 * goal_line_thickness, goal_height + 2 * goal_line_thickness) # 守门员 goalkeeper_width = 20 goalkeeper_height = 100 goalkeeper_x = goal_x - goalkeeper_width goalkeeper_y = HEIGHT // 2 - goalkeeper_height // 2 # 守门员的矩形 goalkeeper_rect = pygame.Rect(goalkeeper_x, goalkeeper_y, goalkeeper_width, goalkeeper_height) # 射门者 shooter_radius = 15 shooter_x = shooter_radius * 2 shooter_y = HEIGHT // 2 # 射门者的矩形 shooter_rect = pygame.Rect(shooter_x - shooter_radius, shooter_y - shooter_radius, shooter_radius * 2, shooter_radius * 2) # 设置射门者的速度 shooter_speed = 5 # 游戏是否结束的标志 game_over = False while not game_over: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True # 获取按键状态 keys = pygame.key.get_pressed() # 移动射门者 if keys[pygame.K_UP]: shooter_rect.y -= shooter_speed if keys[pygame.K_DOWN]: shooter_rect.y += shooter_speed # 碰撞检测 if shooter_rect.colliderect(goalkeeper_rect) or not goal_line_rect.collidepoint(shooter_rect.center): game_over = True # 清空屏幕 screen.fill(WHITE) # 绘制球门 pygame.draw.rect(screen, BLUE, goal_rect) pygame.draw.rect(screen, RED, goal_line_rect) # 绘制守门员 pygame.draw.rect(screen, RED, goalkeeper_rect) # 绘制射门者 pygame.draw.circle(screen, BLUE, shooter_rect.center, shooter_radius) # 更新屏幕 pygame.display.flip() # 控制游戏帧率 clock.tick(60) # 退出游戏 pygame.quit() ``` 保存并运行代码,你将看到一个带有守门员和射门者的足球点球游戏窗口。使用上下箭头控制射门者的位置,目标是射门进球而不被守门员抓住。 这只是一个简单的示例,你可以根据自己的需求进行扩展和修改。祝你玩得开心!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值