就我已经消失而言,我已经设法使它看起来像一个纹理在地面上移动,但实际发生的是我将Ground
精灵的位置设置在Character
精灵,我只在X坐标中移动了Character
,看起来它在地面上移动了。
现在,我知道必须有另一种方式,可能是像素勾结(当2个对象true
命中时给予pixels
)
无论如何,据我所知,我不知道是否应该以这种方式使用另一个图书馆。
关于我这样做的低效方式的例子:
sf::texture cTexture,gTexture;
sf::sprite character,ground;
character.setPosition(0,400);
ground.setPosition(0,390);
以这种方式移动:
character.move(1.5,0.f);
好像它会在地上移动,我大多说,不是。
请以更有效的方式通知我,更好的是一个友好的方式!
答案 0 :(得分:0)
所以基本上你是在尝试制作平台游戏,据我所知,你试图找出以不同于操纵X,Y坐标的方式移动精灵的系统?如果是这样,那么可悲的是没有别的方法,每个游戏都基于操纵X,Y,(Z)坐标并在该位置渲染纹理/精灵/任何东西。你真正想要的是什么(如果我得到了正确答案)是物理学(准确地说是碰撞检测)。 SFML在sprite类中已经有一些碰撞检测(实际上在FloatRect中,但是sprite类由float rect变量组成)
//If a sprite contains given point then it will return true
if(sprite.getGlobalBounds().contains(otherSprite.getPosition()))
{
some collision handling, returning to previous position before moving or whatever
}
//or
//If a sprite intersects other "bounding box" then true
if(sprite.getGlobalBounds().intersects(otherSprite.getGlobalBounds()))
{
// same as above
}
我建议阅读sfml wiki / manual,yt或sfml指南中的一些教程。 如果你不喜欢自己处理物理学的东西,你可以使用Box2D库,这是一个非常好的物理库,但是如果你从获得gamedev物理学的基础知识开始,那么就去使用"手册"一个;)
祝你好运,玩得开心:)