Javascript 碰撞只在西侧和北侧起作用

Javascript 碰撞只在西侧和北侧起作用,javascript,canvas,collision-detection,Javascript,Canvas,Collision Detection,基本上我有一个宇宙飞船的图像,它需要与外星人碰撞。 然而,外星人只探测到西侧和北侧的碰撞。 我希望它在图像的各个方面都发生碰撞 如果(ay>=spy&&ay=ay&&spy=ax&&spx+alienImage.height=ax&&spx您的算法没有考虑shaceship图像的尺寸。至少不是所有情况下都如此 下面是一个修改检测例程的示例: spaceshippimage={}; spaceshipImage.height=10; spaceshipImage.width=10; alie

基本上我有一个宇宙飞船的图像,它需要与外星人碰撞。
然而,外星人只探测到西侧和北侧的碰撞。
我希望它在图像的各个方面都发生碰撞


如果(ay>=spy&&ay=ay&&spy=ax&&spx+alienImage.height=ax&&spx您的算法没有考虑shaceship图像的尺寸。至少不是所有情况下都如此

下面是一个修改检测例程的示例:

spaceshippimage={};
spaceshipImage.height=10;
spaceshipImage.width=10;
alienImage={};
alienImage.width=20;
alienImage.height=20;
ay=50;
ax=50;
spx=70;
间谍=60;
var canvas=document.getElementById(“画布”)
var context=canvas.getContext(“2d”);
context.fillStyle=“#ff0000”
context.fillRect(spx,spy,spaceshipImage.width,spaceshipImage.height)
context.fillStyle=“#00ff00”
context.fillRect(ax、ay、alienImage.width、alienImage.height)

如果(spx+spaceshipImage.width>=ax&&spx=ay&&spy我刚刚测试了你的代码,它在各个方面都正确地检测到了碰撞。有趣的是,我想这可能是因为我试图检测碰撞的图像比它与之碰撞的图像大。对此有任何修正吗?啊,你是对的-这是一个巧合,因为我检查的两个物体d表示碰撞,两者的尺寸相同。因此,如果没有,代码也会检测碰撞。;)我会发布一个答案。我当然会的,但另一方面,你知道如何在游戏中添加投射物或子弹吗?呸,这是一个非常广泛的问题,可能适合单独的主题。但基本上它与外星人没有太大的不同。在像按键一样交互时,你可以得到宇宙飞船的坐标,在这个位置创建一个子弹使用你已经需要移动外星人/宇宙飞船的例行程序移动它。碰撞检测的工作原理是一样的。