- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以基本上,当我改变方向时,我发射的射弹会很好地跟随。问题是之前的所有射弹也会改变方向。
这是我的projectile.java:
package dev.codenmore.tilegame.gfx;
import java.awt.Graphics;
import dev.codenmore.tilegame.Handler;
import dev.codenmore.tilegame.entity.creatures.Player;
public class Projectile {
private double x;
private double y;
public Projectile (double x, double y, Handler handler){
this.x = x;
this.y = y;
}
public void tick(){
if ( Player.getPos() == 3)
x += 10;
if ( Player.getPos() == 2)
x -= 10;
if (Player.getPos() == 1)
y -= 10;
if (Player.getPos() == 0)
y += 10;
}
public void render(Graphics g){
g.drawImage(Assets.arrow, (int) x, (int) y, null);
}
}
这是我的controller.java:
package dev.codenmore.tilegame;
import java.awt.Graphics;
import java.util.LinkedList;
import dev.codenmore.tilegame.gfx.Projectile;
public class Controller {
private static LinkedList<Projectile> b = new LinkedList <Projectile>();
Projectile TempProjectile;
Handler handler;
public Controller(Handler handler){
this.handler = handler;
}
public void tick(){
for(int i = 0; i < b.size(); i++){
TempProjectile = b.get(i);
TempProjectile.tick();
}
}
public void render(Graphics g){
for(int i = 0; i < b.size(); i++){
TempProjectile = b.get(i);
TempProjectile.render(g);
}
}
public static void addProjectile(Projectile block){
b.add(block);
}
public static void removeProjectile(Projectile block){
b.remove(block);
}
}
我的player.java:
package dev.codenmore.tilegame.entity.creatures;
import java.awt.Color;
import java.awt.Graphics;
import dev.codenmore.tilegame.Controller;
import dev.codenmore.tilegame.Game;
import dev.codenmore.tilegame.Handler;
import dev.codenmore.tilegame.gfx.Assets;
import dev.codenmore.tilegame.gfx.Projectile;
public class Player extends Creature {
public static int pos = 0;
public Player(Handler handler, float x, float y) {
super(handler, x, y, Creature.DEFAULT_CREATURE_WIDTH, Creature.DEFAULT_CREATURE_HEIGHT);
bounds.x = 46;
bounds.y = 64;
bounds.width = 32;
bounds.height = 44;
}
@Override
public void tick() {
getInput();
move();
handler.getGameCamera().centerOnEntity(this);
}
private void getInput(){
xMove = 0;
yMove = 0;
if(handler.getKeyManager().up)
yMove = -speed;
if(handler.getKeyManager().down)
yMove = speed;
if(handler.getKeyManager().left)
xMove = -speed;
if(handler.getKeyManager().right)
xMove = speed;
if(handler.getKeyManager().shoot)
Controller.addProjectile(new Projectile((double)(x - handler.getGameCamera().getxOffset()), (double)(y - handler.getGameCamera().getyOffset()), handler));
}
public static int getPos(){
return pos;
}
@Override
public void render(Graphics g) {
if ( pos == 0)
g.drawImage(Assets.player, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
if (pos == 1)
g.drawImage(Assets.playerUp, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
if (pos == 2)
g.drawImage(Assets.playerLeft, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
if (pos == 3)
g.drawImage(Assets.playerRight, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
if(handler.getKeyManager().up){
g.drawImage(Assets.playerUp, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
pos = 1;
}else if(handler.getKeyManager().left){
g.drawImage(Assets.playerLeft, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
pos = 2;
}else if(handler.getKeyManager().right){
g.drawImage(Assets.playerRight, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
pos = 3;
}else if(handler.getKeyManager().down){
g.drawImage(Assets.player, (int)(x - handler.getGameCamera().getxOffset()), (int)(y - handler.getGameCamera().getyOffset()), width, height, null);
pos = 0;
}
}
}
我对编程还很陌生,所以对这些错误感到抱歉。发生的情况如下:http://gyazo.com/118b525d22e42a92fece77f70201cdad
最佳答案
问题所在:
public void tick(){
if ( Player.getPos() == 3)
x += 10;
if ( Player.getPos() == 2)
x -= 10;
if (Player.getPos() == 1)
y -= 10;
if (Player.getPos() == 0)
y += 10;
}
在每个刻度中,都会询问玩家的方向,该方向可以更改,因此射弹也会改变。为了避免这种情况,请在开始时保存每个射弹的位置,如下所示:
private int pos;
public Projectile (double x, double y, Handler handler){
this.x = x;
this.y = y;
this.pos = Player.getPos();
}
然后勾选方法:
public void tick(){
if ( pos == 3)
x += 10;
if ( pos == 2)
x -= 10;
if ( pos == 1)
y -= 10;
if ( pos == 0)
y += 10;
}
切换会更好:
public void tick(){
switch(pos){
case 3: x+=10; break;
case 2: x-=10; break;
case 1: y-=10; break;
case 0: y+=10; break;
}
}
关于Java:向不同方向发射弹丸而不影响已发送的弹丸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280722/
我正在尝试使用 DynamicMethod 并尝试使用 IL 来创建一些对象。我想创建以下非常基本的对象: new Queue(new List{100}); 我已经使用 ILDASM 查看生成此代码
这是我stackoverflow的第一个问题!我有一个显示 mpl 图 Canvas 的 PyQT gui。我已将主轴周围的边距设置为 0,因此绘图将完全填满图形 Canvas 和包含它的小部件。问题
我的环境是 Windows 7,安装了 scala 2.11.4(运行良好),Java 1.8 我已经尝试过 spark-1.2.0-bin-hadoop2.4 和 spark-1.2.1-bin-h
对于我的生活,我无法弄清楚为什么我不能发送或捕获一些数据。 toggleNavigation() 触发,但我不确定 .emit() 是否真的在工作。 最终我想折叠和展开导航,但现在我只想了解如何将数据
我试图在 VUE 3 中传递一个 emit prop,每次传递它时我仍然得到 false,并且 prop 无法切换。 Accordion .vue
我有一个 View 模型,它采用初始 ViewState对象并具有可公开访问的 state可以收集的变量。 class MyViewModel(initialState: ViewState) : V
现在在玩 RxJava,偶然发现了以下问题: 我有 2 个不同的流: 带有项目的流 Stream(只有 1 个项目),它发出第一个流的转换信息。 所以基本上我有项目流,我希望所有这些项目与第二个流中的
我有一个 API 登录服务,它使用 http 服务来执行登录逻辑(LoginApiService、login-api.service.ts): login(data: LoginCredentials
我们有微服务架构,我们通过网络进行服务间调用。我们在顶层服务中使用 RxJava,这会导致向底层服务创建大量并行请求。因此,我收到“没有到主机的路由错误”或“连接错误”。为此,我想减慢 RxJava
Vue.component('rating-edit', { template:` {{rating.remark}} Sav
我最近购买了 Dream Cheeky Thunder 导弹发射器,我希望通过我的树莓派来控制它。 使用来自报复的代码(https://raw.githubusercontent.com/codeda
我制作了这段代码来记录发送到我的机器人的 DM: client.on('messageCreate', async message => { if (message.author.bot) r
我需要从服务器代码、路由器/ Controller 上的任何位置发出来自服务器的套接字。我检查了一些线程和谷歌,但没有按预期工作。 app.js var app = require('express'
我是一名优秀的程序员,十分优秀!