gpt4 book ai didi

c++ - 如何创建简单的二维传送?

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:21 24 4
gpt4 key购买 nike

请帮助我如何实现 Sprite 的简单传送。我只是想让 Sprite 在离开屏幕左侧时平移到屏幕右侧,反之亦然。下面的示例图片..(像 pacman 这样的示例游戏,能够从一扇门传送到另一扇门)

enter image description here

我只是想保持简单。不需要困难的算法。如果 Sprite 在同一 y 轴向左进入,只需将 Sprite 平移到同一 y 轴。这是我尝试过的。

void Physics::Boundary(float PosX, float PosY)
{
this->PosX = PosX;
this->PosY = PosY;

if (this->PosX >= 638.0f)
{
this->PosX = 2.0f;
this->PosY = PosY;
}
if (this->PosX <= 2.0f)
{
this->PosX = 638.0f;
this->PosY = PosY;
}
if (this->PosY >= 638.0f)
{
this->PosX = PosX;
this->PosY = 2.0f;
}
if (this->PosY <= 2.0f)
{
this->PosX = PosX;
this->PosY = 638.0f;
}
}

最佳答案

如果您查看代码的第一个 if 语句,它会设置 PosX字段到 2.0f .但是,下一个 if 语句正在检查 PosX <= 2.0f。 .这将始终为真,因为在第一个 if 语句中,您将其设置为 2.0f .在您的情况下,您将始终被“传送”回原始位置( 638.0f )。您可以尝试改用 if-else 语句:

void Physics::Boundary(float PosX, float PosY)
{
this->PosX = PosX;
this->PosY = PosY;

if (this->PosX >= 638.0f)
{
this->PosX = 2.0f;
this->PosY = PosY;
}
else if (this->PosX <= 2.0f)
{
this->PosX = 638.0f;
this->PosY = PosY;
}
if (this->PosY >= 638.0f)
{
this->PosX = PosX;
this->PosY = 2.0f;
}
else if (this->PosY <= 2.0f)
{
this->PosX = PosX;
this->PosY = 638.0f;
}
}

您也可以只检查小于 2.0f 而不是小于或等于 2.0f。

关于c++ - 如何创建简单的二维传送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27409774/

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