- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在开发一款俯视射击 HTML5 游戏。我目前正在尝试让子弹从我的 Angular 色面向 Angular 发射。
我的 Angular 色总是面向鼠标位置(旋转)。因此,当我发射子弹时,我需要考虑旋转。
我快到了,唯一的问题是子弹从我的实际鼠标位置开始,尽管它朝着正确的朝向移动。
我相信我的数学在我的速度变量范围内是错误的:
var b = new Rectangle( this.x + (this.width / 2) - 4, this.y + (this.height / 2) - 4, 8, 8);
var velocityInstance = new Vector2(0, 0);
velocityInstance.x = input.mouseX - (this.localX + this.width/2);
velocityInstance.y = input.mouseY - (this.localY + this.height/2);
var bulletInstance = new Bullet(velocityInstance, b, this.bullets.length + 1);
this.bullets.push(bulletInstance);
this.shotBullet = true;
“this”指的是我的播放器。 localX/Y 是我 Angular 色的中心位置(他总是在屏幕的中心,场景围绕他移动)。
如果有人能帮我检查一下,我将不胜感激。谢谢!
------ 编辑 ------
这是我的子弹函数:
Bullet = function(vel, rectangle, index){
this.velocity = vel;
this.rect = rectangle;
this.index = index;
this.Update = function(){
this.rect.x += this.velocity.x;
this.rect.y += this.velocity.y;
//Collisions
for(var c = 0; c < GameObjects.length; c++){
if(this.rect.Intersects(GameObjects[c])){
console.debug("Bullet Hit: " + GameObjects[c].tag);
//Player.bullets.splice(index, 1);
}
}
};
this.Draw = function(ctx){
this.rect.Draw(ctxMap);
};
};
最佳答案
实际上,我建议不要使用三 Angular 函数,只是为了提高效率。 Math.atan2、Math.cos 和 Math.sin 可能会变得昂贵。
你已经有了(稍微改名了)
var deltaX = input.mouseX - (this.localX + this.width/2);
var deltaY = input.mouseY - (this.localY + this.height/2);
为什么不直接这样跳呢?
var magnitude = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
var velocityScale = bulletSpeed / magnitude;
velocityInstance.x = deltaX * velocityScale;
velocityInstance.y = deltaY * velocityScale;
它在功能上是相同的,但只使用一个泰勒级数而不是 3 个,因此应该更有效率。越快越好,对吧?
关于javascript - HTML5-JS : Shoot Bullet From Facing Direction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14856725/
使用下面的 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 时敌人已经移动,因此它会落后。除了加快子弹速度
我是一名优秀的程序员,十分优秀!