在 JavaScript 中制作相互交互的实心圆圈
Make solid circles that interact with each other in JavaScript
本文关键字:交互 JavaScript 更新时间:2023-09-26
我正在用基本的物理原理做一个小游戏,我不知道如何让圆圈相互交互,并与矩形相互作用。我想要的只是在游戏中制作一个固体物体。我不能使用引擎或库,有什么想法吗?
你看过MSDN上的教程吗? 特别是,检测 2D HTML5 游戏中的碰撞似乎与您的兴趣相关。
具体而言,下面是该教程中用于检测冲突的代码:
var circlesOverlap = function(circleA, circleB) { // Public. Returns true if the SVG circles A and B overlap, false otherwise.
var deltaX = circleA.cx.baseVal.value - circleB.cx.baseVal.value;
var deltaY = circleA.cy.baseVal.value - circleB.cy.baseVal.value;
var distance = Math.sqrt( (deltaX*deltaX) + (deltaY*deltaY) ); // The classic distance-between-two-points formula.
var radiusA = circleA.r.baseVal.value; // The radius of circle A.
var radiusB = circleB.r.baseVal.value; // The radius of circle B.
if (circleA.id == circleB.id) // If true, circleA and circleB are the same circle.
return false;
return distance <= (radiusA + radiusB);
}; // circlesOverlap()
that.circlesOverlap = circlesOverlap;
请注意,本教程中使用的技术基本上是:
- 跟踪每个对象
- 计算对象之间的距离
- 做出相应的响应(例如,当距离为零时)。
(更新:根据下面的评论,添加了与您的问题最相关的示例)
但是,请花时间阅读完整的教程,了解完整的上下文,并确保适当的信用得到适当的信用。
希望这有帮助...
--矛
使用对象来保存每个圆的 x 和 y 坐标、x 和 y 速度(以像素为单位)以及半径。 保留所有圈子的列表。 在动画循环的每次迭代中,如果圆前进了由其 x 和 y 速度指示的像素数,请检查每个圆的 x 和 y 坐标加上或减去半径是否不彼此重叠。如果是,请处理您希望它们执行的操作(即更改方向、停止等),然后重新绘制。
相关文章:
- Javascript没有't更新DOM,直到用户交互
- 使用JavaScript验证用户交互/输入-这是一种很好的方法
- 交互2个单选按钮2个不同的功能Javascript
- 为什么某些Javascript属性没有在调试器中以交互方式显示
- 为什么在node.js中,c++插件和javascript之间的交互非常昂贵
- 使用Javascript与选择输入交互
- CSS3转换和javascript交互
- 在C#中,我如何对客户端用户交互和javascript(jQuery)代码进行单元测试
- 如何在JavaScript中测量交互和mousedown事件之间的延迟
- JavaScript/Wicket:如何显示阻止用户交互的覆盖
- 用户交互启用了 Javascript
- 与Javascript的简单画布矩形交互
- 使用 CasperJS 时,是否可以在执行任何内联或外部 Javascript 之前与加载页面的 DOM 进行交互
- Javascript - 如何直接与数据库交互
- 为什么css悬停与javascript(fullpage.js)交互,我该如何停止它
- 如何让 JavaScript 与 Jquery 交互
- JavaScript 与选项交互
- 是否可以像真实用户交互那样进行JavaScript操作来更改文档的activeElement
- 服务器端(python)和客户端(javascript)设计和交互
- 如何在ERB文件中交互javascript变量?