gpt4 book ai didi

Javascript - 圆圈碰撞问题

转载 作者:行者123 更新时间:2023-11-29 18:16:26 25 4
gpt4 key购买 nike

我正在用 HTML5 Canvas 制作游戏,这是我解决两个移动圆圈之间碰撞的代码:

function resCCCol(a, b) {
var dx = a.x - b.x;
var dy = a.y - b.y;

var dist = dx * dx + dy * dy;

var vx = b.vx - a.vx;
var vy = b.vy - a.vy;

var dot = dx * vx + dy * vy;

if (dot > 0) {
var scale = dot / dist;

var cx = dx * scale;
var cy = dy * scale;

var mass = a.r + b.r;

var cw1 = 2 * b.r / mass;
var cw2 = 2 * a.r / mass;

a.vx += cw1 * cx
a.vy += cw1 * cy
b.vx -= cw2 * cx
b.vy -= cw2 * cy
}
}

如果我设置坐标使圆圈重叠但它们的速度仍为 0,则圆圈不会相互挤压,这就是问题所在。我该如何解决这个问题?

编辑: fiddle :http://jsfiddle.net/yP7xf/2/ ,点击“Glitch it!”看到故障,正如您所见,它们不会分开。

最佳答案

我不确定 dot 的目的是什么是(也许我在这里遗漏了一些数学知识),但是如果 dist < sum(radii) 就会发生两个圆圈的碰撞.如果发生这种情况,您应该使圆圈偏转,但要确保它们至少有一些小的速度以确保它们分开。

关于Javascript - 圆圈碰撞问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22919567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com