gpt4 book ai didi

ios - 当我将框拖放到屏幕的某些区域时,如何才能将它们固定到位?

转载 作者:行者123 更新时间:2023-11-30 11:44:14 25 4
gpt4 key购买 nike

我目前正在使用 Storyboards 在 swift 上构建一个游戏。该游戏的核心是通过捕捞龙虾来赚取收入。用户拥有龙虾 jar ,可以将其放置在近岸或较亮的水域区域。没有任何经验。我对如何快速编码知之甚少。

我目前的问题是理解碰撞检测。用户可以将 jar 拖入屏幕的三个区域。第一个屏幕是龙虾 jar 的起始位置,玩家必须将龙虾 jar 拖到近海或近海位置。目前,我已经成功编写了拖放 jar 的操作代码,因此可以将它们放置在屏幕上的任何点。我希望做的是,当盆落在近岸或离岸盒子的区域内时,能够使盆卡入到位。此外,当花盆放到适当的位置时,我希望它们排成一排,间隔相等,并在下面排成一排,填满盒子。

图像 -

Starting position of the pots, before they are moved. The regions are labeled as "my pots", "inshore", and "outshore".

我想我还应该提到背景是一个 ImageView ,是游戏运行时 View 的屏幕截图。我这样做是为了避免分层,因为一些花盆有时会在拖动盒子时移动到盒子后面。

提前致谢。

最佳答案

这里有一些想法:

您已经有了移动图 block 的代码,这很好。您现在所需要的只是相同的数学。虽然你的背景是图像,但你还需要一些数据模型来保存你的东西在哪里(或者你的花盆属于哪里)。了解彩池是否在“我的彩池”、“Inshor”或“Outshore”中非常重要。此信息必须保存在某些对象中,例如“myPots”和“inshore”等。
因此,拖动不仅可以移动屏幕上的花盆,还可以更改花盆所属的位置。

提示:可以使用不可见区域来表示区域(myPots,...)。看不见,因为你已经有了背景。但是不可见的矩形使您能够调整 ui 的大小,而无需复杂的重新计算。

我会这样划分区域:

enter image description here

坐标只是为了更好地理解的示例。
大多数游戏引擎都使用左上角的坐标 (0,0)。
因此,如果您拖动并释放一个 jar ,您必须计算拖动的终点并将其与您的面积进行比较。不需要复杂的碰撞检测,因为您只需测试一个点是否在一个区域中。但如果您想要碰撞检测,请搜索 AABB 碰撞检测(如此处 https://studiofreya.com/3d-math-and-physics/simple-aabb-vs-aabb-collision-detection/ )。

就您而言,做出决定就足够了:

if draggedPot.endCoordinate.y > 100 {
// in or out shore
if draggedPot.endCoordinate.x > 300 {
// outshore
}
else {
// inshore
}
}
else {
// still in myPots
}

我希望你明白:)

对于排列成一行,这也需要一些数学知识。循环一个区域中的花盆,一个接一个地放置,始终start-x + width-of-pot + some space。如果这大于区域的宽度,请将 y 设置为锅的高度 + 一些空间,并且 x 从零开始。

关于ios - 当我将框拖放到屏幕的某些区域时,如何才能将它们固定到位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49027739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com