- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
学习 SFML 并首次使用 C++ 制作游戏。我的问题来自角色的移动。我正在制作类似 Astroids 的克隆,按下按键时的运动不是很流畅。当同时按下旋转和前进时,角色会四处走动,并停止。有帮助吗?
播放器.cpp
#include "Player.h"
#include "Bullet.h"
#include <iostream>
#include <valarray>
#define SPEED 10
#define ROTATION 15
Player::Player()
{
this->_x = 150;
this->_y = 150;
this->_xspeed = 0;
this->_yspeed = 0;
this->_rotation = ROTATION;
this->_user = this->loadSprite("/Users/ganderzz/Desktop/Programming/C_Plus/stest/stest/Resources/Player.png");
this->_user.setOrigin(16, 16);
}
void Player::Collision(RenderWindow & in)
{
if(this->_x >= (in.getSize().x-32) || this->_x <= 0)
this->_xspeed = 0;
}
void Player::Move(Event & e)
{
if(Keyboard::isKeyPressed(Keyboard::D))
{
this->_user.rotate(this->_rotation);
}
if(Keyboard::isKeyPressed(Keyboard::A))
{
this->_user.rotate(-this->_rotation);
}
if(Keyboard::isKeyPressed(Keyboard::W))
{
this->_yspeed = -sinf((90 + this->_user.getRotation()) * 3.14 / 180) * SPEED;
this->_xspeed = -cosf((90 + this->_user.getRotation()) * 3.14 / 180) * SPEED;
this->_x += this->_xspeed;
this->_y += this->_yspeed;
}
if(Keyboard::isKeyPressed(Keyboard::Space))
{
Bullet b(this->_x,this->_y,this->_user.getRotation());
}
}
void Player::Draw(RenderWindow & in)
{
this->_user.setPosition(this->_x, this->_y);
in.draw(this->_user);
}
Sprite Player::loadSprite(std::string filename)
{
this->_texture.loadFromFile(filename, IntRect(0,0,32,32));
return Sprite(this->_texture);
}
最佳答案
我认为这是由于时间管理,如果它是一个小的 2D,你可能有很高的 FPS 率。
然后你的 move
事件被多次调用并造成这种卡顿。
您应该限制帧率,如果限制帧率还不够,请尝试为您的事件添加一个时钟。
您可以在this page of the doc 中找到您需要的内容
如果根本不是那样,请向我们展示您的主循环,也许您在那里需要占用大量资源。
希望对您有所帮助。
关于c++ - "Stuttered"按键时移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16778563/
学习 SFML 并首次使用 C++ 制作游戏。我的问题来自角色的移动。我正在制作类似 Astroids 的克隆,按下按键时的运动不是很流畅。当同时按下旋转和前进时,角色会四处走动,并停止。有帮助吗?
我正在尝试编写一些多线程代码以从 DAQ 设备读取并同时呈现捕获的信号: std::atomic rendering (false); auto render = [&rendering, &dis
假设我们有一段代码可以将一系列相似的元素注入(inject)到 DOM 中。像这样: var COUNT = 10000, elements = Object.keys(Array(COUNT
我的一个应用程序通过读取数组列表将对象绘制到屏幕上: 简单代码摘要: @Override public synchronized void paintComponent(Graphics g) {
几年来我一直断断续续地致力于一款基于文本的冒险游戏。它最初是作为学习 Python 的一种方式开始的,在我熟悉了这门语言后,我转向了与我的职业生涯更相关的项目。我现在有点能干了(仍然是菜鸟,但你知道,
我厌倦了在我网站的每个页面上编辑一段内容,所以我把它放在一个单独的 HTML 文件中,并一直在我所有的页面上加载标记到它的位置页面: $("#header-house").
我们的一台运行 PHP 应用程序的生产机器上有一个特殊问题。 我们有一个仅在代码中的一个位置调用的 AJAX 调用。然而,在任何给定时间,当我查看 Linux 中的 PHP 事件文件 (suphp_l
我想创建一个延迟加载适配器以与 Gallery 小部件一起使用。 也就是说 getView() 立即返回一个 ImageView ,稍后一些其他机制将异步调用其 setImageBitmap() 方法
正如标题所说,我正在学习Python,我认为一个很好的方法就是使用链接列表。我正在尝试创建一个“口吃”函数,它基本上获取链接列表中的每个整数,并重复它,无论你告诉它重复多少次。 例如:如果我的链表是1
使用 NetStream 从 http 流式传输内容,我注意到带有某些导出的 h264 的 esp,如果播放器遇到空缓冲区,它将停止并缓冲到请求的长度(如预期的那样)。 然而,一旦缓冲区满了,播放就不
我们有一个问题,即在负载测试期间,如果我们在我们的一项服务上快速触发调用,我们会收到错误 “System.ServiceModel.ServerTooBusyException:创建可靠 sessio
我正在开发一款带有 sprite 套件的简单飞行游戏。一旦 spaceship 达到最大高度和速度,它就会以恒定速度继续飞行。我注意到 spaceship 在不断的飞行过程中会随机出现断断续续的情况。
当切换到加载数据的数据透视表项时,我在从一项切换到另一项时遇到卡顿现象。我已将数据加载分离到一个单独的线程中,这很有帮助,但我仍然遇到一些糟糕的性能....想知道你们是否有任何想法.... 这是枢轴项
我正在尝试使用 d3.js 的 d3.behavior.drag() drag事件来更新我的数据模型(不立即设置元素位置),然后运行我的“绘制”函数以根据更新的模型更新所有元素。此外,我正在使用翻译
嘿嘿, 所以我正在尝试用 libao 播放 pcm 音频。我的目标是让播放可以暂停和取消。 出于某种原因,alsa 驱动程序的输出断断续续,播放速度非常非常快。就像您正在擦洗输出一样。如果我只是播放整
我正在用 C++ 同时开发一个引擎和一个游戏,我使用 box2D 作为物理后端。我正在不同的 Android 设备上进行测试,并且在 3 台设备中的 2 台上进行测试,游戏运行良好,物理效果也是如此。
我在我的网站上工作,我想添加一个动画标题,像波浪一样移动。我已经想出了如何让无限的卷轴滚动起来,但当我的两张图片在顶部移动时,它们之间有一条小的抖动的白线,不能通过调整页边距来修复(在我的实际网站上,
我目前正在阅读 Gary W Flake 写的 super 好书《自然的计算之美》,他在书中介绍了 Stutter language 。我正在尝试在 MacOSX 10.12.6 (Sierra) 上
我目前已经完成了一个可以播放 Youtube 视频的网络应用程序。当我的应用程序(使用 jQuery UI)接受表单输入或实现元素操作(用户或动态触发)。然而,当 Youtube 向我的应用程序强制输
我已经尝试到处寻找这个问题的解决方案,但没有成功;尽管我已经尝试了各种建议,但我将在下面详细说明这些建议。 我创建了一个非常小且简单的示例项目来测试渲染 Tiled map 并设置带有视口(viewp
我是一名优秀的程序员,十分优秀!