그래서 플레이어가 아래쪽으로 움직일 때마다 3 번씩 아래쪽으로 움직입니다. 지상에있을 때마다 업데이트되지만, 지상에있을 때 위치의 차이가 이동합니다. 및 근거. 그러나 나는 불안감을 느끼고있다. (그것은 너무 많이 아래로 움직이고 완전히 멈추지 않는다).내 충돌 감지에 지터 가져 오기
내 질문은 :이 코드가 차이를 올바르게 계산하도록하려면 어떻게해야합니까?
Vector3f pos = new Vector3f(25,-50,25);
//Vector3f pos = new Vector3f(25,-50,25); isn't actually in the update method,
//but is in the object's constructer.
onGround = false;
Vector3f projPos = new Vector3f(pos);
projPos.y += fallSpeed;
//get a vector of all the triangles touching the player
Vector<Tri> tris = getTrisTouching(pos);
float minY;
//make it so if we don't have a list we don't get tossed into infinity
if(tris.size() > 0) minY = Float.POSITIVE_INFINITY;
else minY = 0;
for(int i = 0; i < tris.size(); i++){
Tri tri = tris.get(i);
if(projPos.y + radius <= tri.max.y){
float difference = tri.min.y - projPos.y;
if(difference < minY) minY = difference;
onGround = true;
}
}
if(onGround){
pos.y = minY;
}
else{
pos.y = projPos.y;
}
당신이 항상 바닥에 있지 않다고 가정하고 그 때 당신이 있는지 확인하는 것 같습니다. 나는 당신의 코드에서 너무 많이 말할 수는 없지만, 당신이 당신을 바꾸어야 할 필요가 있다고 생각한다. 당신의 접근 방식을 바꾸어서 당신이 바닥에 있는지를 알아 내고, 충돌/낙하 방식 만 수행하면된다. –