ios - 给定四边形的四个角位置,填充四边形之外的所有内容
问题描述
我有一个 SKTileMapNode,我使用从本教程翻译成 Swift 的 BSP 算法填充房间。完全翻译的算法可以在我的github repo上找到
我有一个自定义类,它给了我一个房间的四个角落位置。我使用四个角落位置来填充房间中的所有内容,如下所示:
for row in 0..<tileMap.numberOfColumns {
for column in 0..<tileMap.numberOfRows {
for room in rooms {
// iterate through each room and draw it in
if room.minX <= column && room.maxX >= column && room.minY <= row && room.maxY >= row {
tileMap.setTileGroup(tileGroup2, forColumn: column, row: row)
}
}
for hallway in hallways {
// iterate through each hallway and draw it in
if hallway.minX <= column && hallway.maxX >= column && hallway.minY <= row && hallway.maxY >= row {
tileMap.setTileGroup(tileGroup2, forColumn: column, row: row)
}
}
}
}
Wherehallways
和room
are 我班级的两个数组都Room
拥有四个角位置。
class Room {
var minX:Int
var maxX:Int
var minY:Int
var maxY:Int
var center:CGPoint
init(X: Int, Y: Int, W: Int, H: Int) {
minX = X
maxX = X + W
minY = Y
maxY = Y + H
center = CGPoint(x: (minX + maxX) / 2, y: (minY + maxY) / 2)
}
}
我知道如何填写房间内的所有内容,但我如何填写房间外的其他所有内容?我似乎无法弄清楚。做if room.minX >= column && room.maxX <= column && room.minY >= row && room.maxY <= row
总是失败。
我需要填充房间外“泄漏”的所有内容,因为 Apple 的 SKTileMapNode 自动平铺有问题,我需要“平滑”它。
错误自动平铺的示例:
他们应该是什么:
我的想法是,因为自动平铺不起作用,所以用黑色瓷砖填充房间和走廊外泄漏的所有东西。希望这会强制自动平铺算法将图块正确放置为 4 面多边形。然而,我不知道如何填满房间外的所有东西。我的替代选择是自己制作一个自动平铺算法。我想避免这种情况,因为制作需要几天时间,而且很麻烦。
解决方案
推荐阅读
- memory - Gem5没有给出备用线程错误?
- ios - 为什么我无法将字符串变量转换为整数值?
- aframe - 在框架中使用 superhands 组件,是否可以在不使用物理的情况下旋转抓取的对象?
- python - 如何使用 Python 获取 GeoJSON 多边形的面积
- ios - 检查ios设备是否被阻止
- javascript - JS - 合并对象相同的数组lodash
- netty - 禁用 HttpClientCodec 以添加和编码附加数据
- python - 在 matplotlib 中并排绘制条形图上的多个字符串值
- python-3.x - 带有 websockets 的 Tornado 协程不适用于 python3
- powerbi - 使用来自 Azure 分析服务的表上的 DAX 函数创建度量