고도 엔진에서 DampedSpringJoint2D의 간단한 사용 방법 - Whitmem
고도 엔진에서 DampedSpringJoint2D의 간단한 사용 방법
Game Development
2025-01-31 01:08 게시 66eeeb6a903dd86dda2b

0
0
63
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
고도 엔진에서의 DampedSpringJoint2D 의 간단한 사용 방법
이 게시글은 필자가 해당 Joint2D를 사용하면서 헷갈린 부분을 정리한 것으로 틀린 내용이 있을 수 있다.
엔진 상에서 DampedSpringJoint2D 라는 것을 사용하기 위해 적어도 2개의 RigidBody와 같은 물리 노드가 필요하다. 여기서는 바디 2개를 만들고 안에 콜리젼과 이미지를 넣어 구성하였다.
주의 할 점은 초기 월드 세계에 정의하는 Length와 객체는 일치해야하는 것으로 보인다. 만약 위와 같이 떨어진 상태로 정의하면 빨간색 길이만큼 추가적으로 (회전 처리인지는 정확히는 모르겠다.) 길이로 판정되어 더 긴 Length가 되는 것 같다.
위와 같은 경우도 동일하다. Length의 끝점과 먼 곳에 바디 2를 설정하면 해당 거리만큼 더 늘어난다. 결과적으로 길이가 더 늘어난다.
여기서 Length는 기본 초기화 당시의 길이이다. 즉 위 월드 세계에 표시되는 황토색 길이를 나타낸다. 기본적으로 이 길이와 객체는 맞추고 초기화하는 것이 좋아 보인다. 한편, 이 장력을 늘리거나 의도적으로 줄일 수 있다. 그것이 Rest Length이다. 즉 Rest Length는 의도하려는 길이이다. Rest Length를 100px로 지정하는 경우, 현재 스프링 길이가 그보다 적은 50px일 때 수축력이 적용된다. 즉 100px를 따라가려고 한다. 한편, Rest Length가 100px일 때 그 보다 긴 150px 인 경우 압축력이 적용되어 짧아지려고 한다. 물론, 자체 Length 보다는 짧아지지는 않는다. 그렇기 때문에 처음에 의도한 Length를 적용해두고, 길게 나두려면 Rest Length를 길게 지정하고, 서서히 잡아당기려면 Rest Length를 줄이는 식으로 하면 된다.
Stiffness 는 원래 상태를 유지하려는 세기이고, Damping은 그 원래 모습으로 돌아갈 때의 속도이다.
그런데 문제는 해당 물리 처리가 끝나버리면 (즉 땅에 도달하거나, 멈춘 경우) 이 Rest Length를 조절하여도 물리 처리가 수행되지 않는다. 이는 대기 모드에 들어가기 때문인데, 이 물리 요소를 다시 깨우기 위해서 대상 노드의 RigidBody 에 임의 힘이나 충격을 주면 된다. 코드 상으로 ApplyForce, ApplyImpulse이다.
즉 Rest Length를 코드 상으로 조절하고 이 물체에 임의로 힘을 주면 (여기서는 X 키로 하였다.) 물리 처리가 시작되면서 압축 또는 수축되는 것을 볼 수 있다.
이 처리를 이용해 잡아 당기는 처리 등을 하는 방법에 대해서 다음 게시글에서 해 보겠다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.