我对sfml完全陌生,所以我在YouTube上学习了一个教程。 我做的和那个家伙完全一样,但是我的动作还是有问题。
基本上,如果我按下一个移动键,玩家(它只是一个矩形形状)就会移动一小会儿,当我松开这个键时,玩家就会回到它的官方位置。 为什么它会回到它的官方立场。 它只移动一次,即使我长按按键,它也不会移动超过一次。
下面是我的代码:
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace std;
int main()
{
sf::RenderWindow window(sf::VideoMode(512, 512), "SFML Tutorial", sf::Style::Close | sf::Style::Titlebar| sf::Style::Resize);
//Game Loop
while(window.isOpen())
{
//create an event
sf::Event evnt;
//create a rectangle shape called player
sf::RectangleShape player(sf::Vector2f(100.0f, 100.0f));
player.setFillColor(sf::Color::Red);
while(window.pollEvent(evnt))
{
switch(evnt.type)
{
case sf::Event::Closed:
window.close();
break;
case sf::Event::Resized:
cout<<"New window width: "<<evnt.size.width<<" New window height: "<<evnt.size.height<<endl;
break;
case sf::Event::TextEntered:
if(evnt.text.unicode < 128){
printf("%c", evnt.text.unicode);
}
}
} //window event
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Left))
{
player.move(-5.0f, 0.0f);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Right))
{
player.move(5.0f, 0.0f);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Up))
{
player.move(0.0f, -5.0f);
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Key::Down))
{
player.move(0.0f, 5.0f);
}
//display player
window.clear();
window.draw(player);
window.display();
}
return 0;
}
问题是你在while循环中以100.0f100.0f每帧创建一个字符。 因此,您需要将创建字符的代码移出while循环。
int main()
{
sf::RectangleShape player(sf::Vector2f(100.0f, 100.0f));
player.setFillColor(sf::Color::Red);
while(window.isOpen())
{
//create an event
sf::Event evnt;
//create a rectangle shape called player
while(window.pollEvent(evnt))
...
}
}
所以,最近我开始用C和SFML制作一个Pacman克隆。开发游戏时一切都很顺利,直到我需要创建墙碰撞。我不擅长碰撞,所以我以为会有问题。 我想做的是检查你上方是否有一堵墙,除了你或其他什么,然后如果你与一堵墙相撞,阻止玩家。 问题是,当你撞到墙时,你很早就停下来了。有时你会陷入困境。这并不是要与代码混淆,因为代码使Pacman在你身上有一堵墙的时候不能转身,而是在遇到墙的时候停下来。 这是我刚才提
我在Box2d上遇到了问题,因为我是Box2d新手,所以无法处理我的播放器的移动。当用户在我的游戏中触摸左右按钮时,我想将我的玩家左右移动。在我的游戏中,玩家已经通过了y轴。我想在控制播放器的同时看到很酷的平滑动画。我就是不能把我的球员移到左边我怎么能做到?提前谢谢 //编辑 我创建了一个测试夹具,我可以移动夹具,但不能移动我的球员。如何将我的玩家精灵连接到身体上?我必须找到控制身体的正确方法。一
zyMedia 是由掌阅科技开源的基于HTML5 video和audio的自定义UI多媒体播放器,经过多种移动端设备环境的检测(尤其是国产设备和浏览器),已用于公司的产品线。 特点: 支持主流移动设备移动端浏览器,适合国内移动环境。 支持多种视频、音频格式,如mp4、mp3、oga、webm等。 轻量,UglifyJS压缩14KB 已通过测试的设备: 小米1、小米2s、小米 MI3、红米、小米 M
Android播放开发SDK IOS播放开发SDK
问题内容: 播放器是一个面板,将其删除,将其位置更改,然后重新添加到绘制到主框架的另一个面板(包含此方法的面板)中。还有许多其他小的面板,其中包含草精灵作为地形图块绘制到主面板上。我认为问题在于,当我致电时,它也会重新验证所有这些小面板。我该如何解决? 编辑:我应该提到,我用来将玩家放置在主面板上。 问题答案: 似乎是一项繁重的操作,您可以在EDT(GUI线程)中执行它。而是从新线程或SwingW
主要目标是想让儿童可以以最好的体验来看动画片。 1、支持记录每一部动画片的当前播放位置,方便下次打开的时候可以接着看。 2、可以增加片头、片尾的时间点,不用每次都播放重复内容。 3、播放、暂停、上一集、下一集、快照、全屏等。
问题内容: 对于我的问题,我有一个链接。我想通过在fancybox叠加窗口中单击链接来播放视频。这不是问题。问题是参数,例如“自动播放”或“自动隐藏”。 以下链接无效: 覆盖窗口已打开,但视频未自动播放。 编辑:我想在移动设备上使用HTML5播放器。 在桌面浏览器上,它可以使用参数,但不能在移动设备上使用。 问题答案: 事实证明,无法在iOS设备(iPhone,iPad,iPod touch)和A
因此,我进行了一个测试,看看碰撞是如何在SFML中操作的。我制作了以下代码片段: 正如代码所提示的,马里奥在接触地板物体时会改变位置,并且会瞬移到地板上方。 注意,“绿框”是我前面提到的地板对象。还有,忽略图片1中的“左”字,我指的是“右”。 当然,这种行为是有意的(即不是bug),但它是不想要的。 所以我的问题是:我怎样才能消除这种“副作用”呢?我的意思是,我怎样才能修改我的代码,这样马里奥就不