Java Swing游戏开发学习4

内容来自RyiSnow视频讲解

玩家地图元素碰撞

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

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

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

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

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

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

代码

gitee仓库

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>