为了账号安全,请及时绑定邮箱和手机立即绑定

碰撞仅适用于西侧和北侧

碰撞仅适用于西侧和北侧

富国沪深 2021-06-28 09:59:53
基本上我有一个需要与外星人相撞的宇宙飞船的图像。然而,外星人只检测到西侧和北侧的碰撞。我希望它在图像的所有侧面碰撞。if (ay >= spy && ay <= spy + spaceshipImage.height // North side    ||  spy >= ay && spy <= ay + alienImage.height // South side) {  if (spx + alienImage.width >= ax && spx + alienImage.height <= ax + alienImage.height // West side _+    ||    spx >= ax && spx <= ax + alienImage.width // East side _+  ) {    slives = slives - 1;    ax = Math.floor(Math.random() * (canvasWidth2 - alienImage.width));    ay = -100  }}
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

您的算法没有考虑 shaceship 图像尺寸的尺寸。至少不是所有情况。


这是一个修改了检测程序的示例:


spaceshipImage = {};

spaceshipImage.height = 10;

spaceshipImage.width = 10;

alienImage = {};

alienImage.width = 20;

alienImage.height = 20;

ay = 50;

ax = 50;

spx = 70;

spy = 60;


var canvas = document.getElementById("canvas")

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)

if (spx + spaceshipImage.width >= ax && spx <= ax + alienImage.width && spy + spaceshipImage.height >= ay && spy <= ay + alienImage.height) {

  console.log("hit");

}

<canvas id="canvas"></canvas>


查看完整回答
反对 回复 2021-07-08
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信