我试着在处理过程中创建平滑的运动,但它现在不起作用,我不知道为什么它不起作用。我是一名编程初学者,所以在解释时不要让我觉得太复杂:)。这个角色现在移动非常缓慢,我不能同时按下多个按钮,如果有人能帮助我,那就太好了。提前谢谢你。
class Player1 {
int x = width/2;
int y;
float speedX = 5;
float speedY = 5;
int size;
boolean up, down, left, right;
Player1(int newX, int newY, int newSize) {
x = newX;
y = newY;
size = newSize;
}
void run() {
display();
movePlayer1();
}
void display() {
ellipse(x, y, size, size);
}
void movePlayer1() {
if (keyPressed) {
if (key == 'a' || key == 'A') {
left = true;
}
if (key == 'd' || key == 'D') {
right = true;
}
if (key == 'w' || key == 'W') {
up = true;
}
if (key == 's' || key == 'S') {
down = true;
}
if (key == 'a' || key == 'A') {
x -= speedX;
}
if (key == 'd' || key == 'D') {
x += speedX;
}
if (key == 'w' || key == 'W') {
y -= speedY;
}
if (key == 's' || key == 'S') {
y += speedY;
}
}
}
void keyReleased() {
if (key == 'a' || key == 'A') {
left = false;
}
if (key == 'd' || key == 'D') {
right = false;
}
if (key == 'w' || key == 'W') {
up = false;
}
if (key == 's' || key == 'S') {
down = false;
}
}
}
这是主代码页
Stars stars[] = new Stars[100];
Player1 player1;
Player2 player2;
void setup() {
size(600, 800);
player1 = new Player1(width/2, 100, 30);
player2 = new Player2(width/2, 700, 30);
for (int i = 0; i < stars.length; i++) {
stars[i] = new Stars((int)random(width), (int)random(height));
}
}
void draw() {
background(0);
stroke(255);
strokeWeight(3);
line(0, height/2, width, height/2);
//draw stars
for (int i = 0; i < stars.length; i++) {
stars[i].run();
}
// draw players
player1.run();
player2.run();
}
首先,我建议分别更改类Player1
Player2
。对于行为相同的对象,不要使用不同的类。注意,唯一的区别是玩家被不同的键移动,这不应该被不同的对象处理。
创建一个类Player
。类ahs到新的方法按下
和发布
,改变当前的移动方向(dx
,dy
),依赖于输入参数左
,右
,上
和下
。例如:
class Player {
int x, y;
int dx = 0, dy = 0;
float speedX = 5;
float speedY = 5;
int size;
Player(int newX, int newY, int newSize) {
x = newX;
y = newY;
size = newSize;
}
void run() {
display();
movePlayer();
}
void movePlayer() {
x += dx * speedX;
y += dy * speedY;
}
void display() {
ellipse(x, y, size, size);
}
void pressed(boolean left, boolean right, boolean up, boolean down) {
if (left) dx = -1;
if (right) dx = 1;
if (up) dy = -1;
if (down) dy = 1;
}
void released(boolean left, boolean right, boolean up, boolean down) {
if (left) dx = 0;
if (right) dx = 0;
if (up) dy = 0;
if (down) dy = 0;
}
}
使用e键盘回调(code)keyPress()andkeyReleated()
)来改变播放器的移动。参数左键、右键、向上键和向下键的设置取决于按下或释放的键。例如:
Player player1;
Player player2;
void setup() {
// [...]
}
void draw() {
// [...]
}
void keyPressed() {
player1.pressed((key == 'a' || key == 'A'), (key == 'd' || key == 'D'),
(key == 'w' || key == 'W'), (key == 's' || key == 'S'));
player2.pressed(keyCode == LEFT, keyCode == RIGHT, keyCode == UP, keyCode == DOWN);
}
void keyReleased() {
player1.released((key == 'a' || key == 'A'), (key == 'd' || key == 'D'),
(key == 'w' || key == 'W'), (key == 's' || key == 'S'));
player2.released(keyCode == LEFT, keyCode == RIGHT, keyCode == UP, keyCode == DOWN);
}
这允许您同时处理多个键的状态。
我希望这段代码能有效地提高方向间转换的平滑度(一次只能使用一个键),这样我就可以使用多个键。问题是,每当我改变方向,“玩家”就会停下来,然后继续朝新的方向前进。我想让“玩家”在两个方向之间平稳过渡,而不必在按下新键之前完全释放活动键。 主要代码: 玩家等级代码: 提前谢谢!
我正在写一个程序,让小“鸟”四处移动并跟随你的光标。这些实例不旋转或任何花哨的东西,我有一个非常不寻常的问题。 如果实例位于同一个X级或Y级,它会振荡。我以前遇到过边界和运动的问题,所以我尝试采取类似的方法。 只有当两个版本同时运行时,移动才会平滑。我尝试过重新排列' 这个代码中有没有我可以删除的部分来阻止它重复出现? 谢谢:)
有人有这方面的经验吗?我正在研究迁移,但是由于我们已经用GCM发布了应用程序,每天有成千上万的用户和成千上万的通知,我不愿意这样做,因为担心会破坏现有的服务。有人顺利过渡了吗? 具体来说,在教程中(https://developers.google.com/cloud-messaging/android/android-migrate-fcm)第一步是“导入谷歌项目”。这是单向操作吗?现有的GCM
我们公司本来是开发一个项目配置1个后端,1个前端,1个andorid,1个ios,现在大环境不好,我感觉公司有难处,我就跟公司说,我可以包揽一个项目,前端后端移动端一个人干了,这样可以公司省点钱。 前端后端肯定没有什么问题,移动端我没开发过,不过我感觉这个东西都是基于事件驱动的,点击一个按钮触发一个事件,没啥区别。我就是想问问,哪一个移动端框架是除了native最稳定的,能满足最多事件或者应用场景
问题内容: 我正在写一个使用numpy中的卷积函数的移动平均函数,它应该等效于(加权移动平均)。当我的权重全部相等时(如简单的算术平均值),它可以正常工作: 给 但是,当我尝试使用加权平均值时 而不是(对于相同的数据)3.667,4.667,5.667,6.667,…我希望,我得到 如果删除“有效”标志,则什至看不到正确的值。我真的很想对WMA和MA使用convolve,因为它可以使代码更整洁(相
问题内容: 我正在为Pyspark中的时间序列编写异常检测算法。我想计算(-3,3)或(-4,4)窗口的加权移动平均值。现在,我正在使用滞后和超前窗口功能,并将它们乘以一组权重。我的窗口当前是(-2,2)。 我想知道是否有另一种方法可以计算Pyspark中的加权移动平均值。 我正在使用的当前代码是: 问题答案: 您可以概括当前的代码: 它可以用作: 注意事项 : 您可能会考虑将滞后缺失的帧的结果标