Java Swing游戏开发学习4

内容来自RyiSnow视频讲解

玩家地图元素碰撞

这一节实现了,玩家角色与地图上树木、水、墙的碰撞检测,当玩家行走到这样的瓷砖贴图的时候,将不能再继续前进。

在这里,作者的实现是每个方向,判断2个点是否与前进方向的solid tile(固体瓷砖)相撞,如果是则不再继续前进,否则玩家继续前进。

这一节有几个比较重要的地方需要注意:

  1. 玩家的固体区域(solid area)是一个重要的点,就是用来判断碰撞的区域,或者说,地图中其他元素能感受到的玩家的尺寸大小。最简单的处理方式是,玩家整个大小48x48作为solid area,然而这样就有不合理的敌方,如下图:
    在这里插入图片描述
    看玩家单位位置,明显还能继续向上走,如果使用48x48玩家的总体大小作为玩家的solid area,就无法实现继续向上的效果。因此需要取其中的一部分作为solid area。

当然,还有一个原因,当玩家要通过一个恰好可以容纳他自己通过的入口(48x48)的时候,玩家将很难对准这个入口,以至于要调整很多次才能对准这个入口,只要有1个像素被阻挡也无法通过。

在这里插入图片描述
作者的处理方式如下图:红色部分作为solid area就解决了这2个问题。
在这里插入图片描述
具体可以参考代码中的处理逻辑,新增了一个碰撞检测类。

代码

gitee仓库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值