2014-10-20 4 views
0

Я попытался реализовать столкновение моделей в моей игре LWJGL, и кажется, что объекты находятся в постоянном столкновении, даже когда радиус столкновения равен 0. Я поставил код для столкновения ниже, а также ссылку на источник, который я использовал, чтобы помочь с столкновением с ограниченной сферой.Столкновение с ограничивающей сферой не работает

package model; 

import org.lwjgl.util.vector.Vector3f; 

public class BoundingSphere { 

    private Vector3f mid = new Vector3f(); 
    private float radius; 

    public BoundingSphere(Vector3f midpoint, float radius) { 
     this.mid = midpoint; 
     this.radius = radius; 
    } 

    public boolean isColliding(BoundingSphere other){ 
     float diffX = (other.mid.x - mid.x); 
     float diffY = (other.mid.y - mid.y); 
     float diffZ = (other.mid.z - mid.z); 

     float diffXSquared = (float) Math.pow(diffX, 2); 
     float diffYSquared = (float) Math.pow(diffY, 2); 
     float diffZSquared = (float) Math.pow(diffZ, 2); 

     float radiusSums = (other.radius + radius); 
     float radiusSumsSquared = (float)Math.pow(radiusSums, 2); 

     if (diffXSquared + diffYSquared + diffZSquared > radiusSumsSquared){ 
      return true; 
     } 
     else{ 
      return false; 
     } 

    } 

} 

Collision Detection Page

ответ

1

Похоже, что вы перевернули состояние. Он сталкиваясь только если:

((x2 + y2 + z2) <= r2) 

Если вы хотите перекрываться вместо столкновения, то «< =» будет «<»

+0

Спасибо так много! Я вытащил его на доске и, конечно же, когда расстояние между двумя кругами меньше квадрата их радиуса, есть столкновение! – user3140916

Смежные вопросы