iPhone에서 Cocos2d를 사용하여 2D 자동차를 그리며 자연스럽게 왼쪽에서 오른쪽으로 조정합니다. 여기자동차가 원을 그리며 스프라이트를 움직이는 경우
내가 뭘하려 :
는 바퀴의 각도를 계산하고 단지 바퀴가 가리키는 대상 지점으로 이동합니다. 그러나 이것은 매우 부 자연스러운 느낌을줍니다. 자동차가 시간의 절반을 드리프트한다
나는 차에서 회전 원을 얻는 방법에 대한 연구를 시작했는데, 이는 휠베이스와 자동차 너비와 같은 몇 가지 상수가 필요하다는 것을 의미했다.
float steerAngle = 30; // in degrees float speed = 20; float carWidth = 1.8f; // as in 1.8 meters float wheelBase = 3.5f; // as in 3.5 meters float x = (wheelBase/abs(tan(steerAngle)) + carWidth/ 2); float wheelBaseHalf = wheelBase/2; float r = (float) sqrt(x * x + wheelBaseHalf * wheelBaseHalf); float theta = speed * 1/r; if (steerAngle < 0.0f) theta = theta * -1; drawCircle(CGPointMake(carPosition.x - r, carPosition.y), r, CC_DEGREES_TO_RADIANS(180), 50, NO);
라인의 처음 몇 내 상수 :
나는이 주제에서 발견 된 .NET tutorial 다음을 시도했지만 실제로 코코아에서 지원하지 않는 Matrixes를 사용하기 때문에 변환 할 수 없다.
누군가 내게 이것을 시작하는 방법에 대한 몇 가지 지침을 줄 수 있습니까? 예제 코드를 찾고 있었지만 찾을 수 없습니다. 내 상수를 수정 아래의 댓글 후
편집, 내 휠베이스, 내 carWidth은 (스프라이트는 폭 30 픽셀입니다) 30 (스프라이트가 높은 50 픽셀입니다) 지금 50입니다.
하지만 지금 내 차가 처음 '틱'할 때 회전이 정확하고 배치 후에도 문제가 발생하지만 계산이 잘못되었다고 생각합니다.
터닝 원의 가운데가 원래 위치로 유지되는 대신 이동됩니다. 내가 필요로하는 것은 (내가 생각하기에) 차의 각 각도에서 회전 중심의 원래 중심을 다시 계산해야한다는 것입니다. 나는 이것이 반경과 회전 각을 가지고 있기 때문에 이것이 쉽다라고 생각할 것이다. 그러나 나는 멋진 원안에서 차를 계속 움직이는 방법을 알아낼 수 없다.
더 이상 포인터가 있습니까?
매트릭스는 다차원 배열 일뿐입니다. 참조 코드를 수정하거나 작업 할 수 있어야합니다. – EightyEight