我正在写一个游戏,其中一个球从玩家绘制的线条反弹。我不确定我应该怎么做碰撞的物理学。我有检测部分,但计算新的反射角度,速度,速度方向(负与正),这些类型的东西对我来说有点混乱。这是我到目前为止碰撞的内容,但它确实无法正常工作
public void calculateCollision(ArrayList<Line> lines) {
Line line = GroundContact(lines);
if(line!=null ) {
System.out.println("Processing Collision");
double newAngle = 0;
double oldAngle =velocity.getAngle();
newAngle = 2*line.getAngle()-velocity.getAngle();
if(line.getAngle()<0 && velocity.getAngle()>0) {
newAngle = 180+(2*line.getAngle()-velocity.getAngle());
}
velocity.setvX(Math.sqrt(Math.abs((Math.pow(velocity.getSum(), 2))*Math.cos(newAngle*Math.PI/180))));
velocity.setvY(-0.1*Math.sqrt(Math.abs((Math.pow(velocity.getSum(), 2))*Math.sin(newAngle*Math.PI/180))));