- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Slick2D 库用 Java 制作塔防游戏。我的子弹数学有问题。现在子弹将在敌人当前的 X,Y 坐标之后射击 - 但由于当子弹到达 X,Y 时敌人已经移动,因此它会落后。除了加快子弹速度之外,您知道如何解决这个问题吗?项目符号数学位于项目符号类的底部。
public class Bullets implements GameObject {
private ArrayList<Bullet> bulletList = new ArrayList<Bullet>();
Enemy enemy = new Enemy();
BasicTower basicTower = new BasicTower();
public Shape bulletCircle = null;
public boolean collides = false;
public int bulletCount;
public Bullets() throws SlickException {
}
@Override
public Vector2f getPosition() {
return null;
}
@Override
public void init(GameContainer gc, StateBasedGame stateBasedGame) throws SlickException {
}
@Override
public void render(GameContainer gc, StateBasedGame stateBasedGame, Graphics g) throws SlickException {
for (int i = 0; i < bulletList.size(); i++) {
Bullet bullet = bulletList.get(i);
bulletCircle = new Circle(bullet.location.getX(),bullet.location.getY(),10);
if (bulletCircle.intersects( enemy.playerRectangle )){
bulletCount++;
bulletList.remove( i );
collides = true;
}else{
collides = false;
}
g.setColor( red );
g.fill(bulletCircle);
}
}
@Override
public void update(GameContainer gc, StateBasedGame stateBasedGame, int delta) throws SlickException {
//Update the bullet's position.
Input input = gc.getInput();
//enemy.update(gc, stateBasedGame, delta);
for (int i = 0; i < bulletList.size(); i++) {
Bullet bullet = bulletList.get(i);
bullet.move();
}
}
public void addNewBullet2(float x1, float y1, float x2, float y2) {
bulletList.add(new Bullet(x1*64+48,y1*64+48, x2, y2));
}
class Bullet {
float startX = 0;
float startY = 0;
float destX = 0;
float destY = 0;
Point location = new Point(0, 0);
float speed; //how fast this moves.
float dx;
float dy;
public Bullet(float startX, float startY, float destX, float destY) {
this.startX = startX;
this.startY = startY;
location.setLocation(startX, startY);
this.destX = destX;
this.destY = destY;
recalculateVector(destX, destY);
}
public void recalculateVector(float destX, float destY) {
float rad = (float) (Math.atan2(destX - startX, startY - destY));
//Can set different speeds here, if you wanted.
speed = 5;
this.dx = (float) Math.sin(rad) * speed;
this.dy = -(float) Math.cos(rad) * speed;
}
public void move() {
float x = location.getX();
float y = location.getY();
x += dx;
y += dy;
location.setLocation(x, y);
}
}
最佳答案
这里只是一个线性代数问题。您的目标是 P0 点,即您开始射击敌人时所在的位置。但相反,你需要指出子弹到达他们的时间。所以你需要敌人的速度、子弹的速度和射击者的距离来获得正确点的坐标。
但是,由于数学可能会变得棘手(例如,如果目标不沿着一条线移动),您可以尝试让子弹跟随目标,这当然会导致曲线轨迹。
关于java - 塔防 : bullet math,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50255929/
使用下面的 CSS,我可以获得一个列表,该列表使用每边带有大括号的小字母元素符号,但现在计数器似乎在内容中没有分隔,所以它看起来像: 发生了什么: (a) this is my content in
我正在尝试使用 jBullet 物理和 voronoi 粉碎进行一些工作。我可以找到大量关于它工作的视频,只是没有代码示例。 Java 或 C++ 都可以。只需要一些代码的示例。找不到一个这样做的例子
我正在尝试为我的项目符号使用列表。每当我运行我的更新项目符号代码时,它都会给我这个错误: 错误 1 错误 C2662:“Bullet::detectCollision”:无法将“this”指针从“
我有两个关于 Bullet 的问题,但它们是相关的。 在 HelloWorldApp 中,目标是让球在盒子上弹跳,对吗?如果我想测试一架飞机,我可以只添加一个 btCollisionObject 和一
在 Bullet Physics 库中,构造刚体时,惯性张量的默认参数是零向量。 我对惯性的理解相当初级,但从方程 扭矩 = 惯量 * angular_velocity 我希望具有零惯性的物体上的角速
刚开始学习Java,最近学习了Timer类。我正在尝试将我目前学到的知识应用到制作这个项目中,其中一个宇宙飞船发射子弹。我的所有控件都可以正常工作,但是当我创建另一个项目符号对象时,我遇到了以前的项目
我在使用 Titanium 开发的 Android 应用程序中遇到了 BULLET 字符问题。 我有这部分代码: function getFormattedPizza() { var
我正在尝试在bulletphysicals中实现一个简单的幽灵对象,这就是我创建幽灵对象的方式: btGhostPairCallback* ghostCall = new btGhostPairCal
我的代码中有一个可拖动元素。 当我拖动这个元素时,项目符号出现了,但我不想要这个项目符号。 这是我的代码:* http://jsfiddle.net/hirenwebdp/Mf6zJ/333/ * 最
我对使用 Java 制作游戏(有点)陌生。我之前创建了一些简单的游戏,例如包收集游戏,但现在我想制作一个自上而下的僵尸射击游戏。我已经有了一个可以移动的球员,但现在我想实现射击。 问题是我不确定如何制
我认为 Bullet Physics 的 HelloWorld.cpp 给出了一个自由落体的例子。 为了检查 Bullet Physics 的结果是否符合物理定律,在 HelloWorld.cpp 中
我需要显示元素的层次结构。显而易见的解决方案是一系列嵌套的无序列表。但是,我需要克服的问题是节点值需要在整个树中左对齐,元素名称在树中按预期缩进。这是一个示例 Project Root Node
我是 Bullet 的新手,所以如果我的问题对您来说微不足道,我提前道歉。 我需要从 .STL 文件加载一组凹三角网格并执行碰撞检测。对象可以由用户移动。从用户手册中,我读到:“凹三角形网格:对于静态
在LibGDX Bullet Physics中如何使软体弹跳。我将“软体球的复原”设置为0.5,将“刚体地面的恢复”设置为1.0。我为球对象尝试了btSoftBody,为地面对象尝试了btRigidB
我希望在同一单元格中每一行的开头插入项目符号指针。是否有公式或宏可以这样做? 以下是将出现在单个单元格中的行项目,我需要在每个句子的开头添加一个项目符号:- 防水膜将水密封并让水分逸出 绒面革和网眼鞋
使用 Bullet 2.76 我试图卡住一个物体(刚体),使其立即停止移动,但仍然对碰撞做出响应。 我尝试将它的激活状态设置为 DISABLE_SIMULATION,但随后它对其他对象几乎不存在。此外
我正在尝试为每个对象/网格生成碰撞。它们都是静态的,应该与动态的球/球体碰撞。 我的代码如下所示: const transform = new Ammo.btTransform(); transfor
我有一些关于子弹物理库的一般性问题。 简而言之,这是我目前的理解: btDiscreteDynamicsWorld - 最简单的物理世界,只处理刚体,也许性能更好。 btSoftRigidDynami
我试图突出当前 Activity 行的项目符号背景,但如果我只是设置项目符号的背景颜色,它只会突出显示数字部分。我希望项目符号占据的所有空间都突出显示。 我希望 9 左侧的所有空间也都突出显示,并且可
我正在使用 Slick2D 库用 Java 制作塔防游戏。我的子弹数学有问题。现在子弹将在敌人当前的 X,Y 坐标之后射击 - 但由于当子弹到达 X,Y 时敌人已经移动,因此它会落后。除了加快子弹速度
我是一名优秀的程序员,十分优秀!