물리 조인트 삭제 (physics_joint_delete)
두 개의 물리적 표현을 가진 인스턴스가 조인트로 연결된 경우, 이 조인트는 언제든지 삭제할 수 있습니다. 일반적으로 두 인스턴스 중 하나가 파괴되거나 방이 종료될 때 자동으로 삭제되지만, 수동으로 삭제하고 싶을 때가 있습니다. 이럴 때 이 함수를 사용합니다.
조인트가 기어 조인트의 일부인 인스턴스가 파괴될 때는, 기어를 형성하는 인스턴스가 파괴되기 전에 이 함수를 사용하여 기어 조인트를 삭제해야 합니다. 나머지 조인트는 자동으로 삭제됩니다. 예를 들어, 인스턴스의 파괴 이벤트에서 사용할 수 있습니다.
문법
physics_joint_delete(joint)
인수
인수 | 유형 | 설명 |
---|---|---|
joint | Physics Joint ID | 삭제할 조인트의 인덱스 |
반환값
- N/A
예제
다음 코드는 "shipJoint" 변수가 조인트 인덱스를 가지고 있는지 확인하고, 가지고 있다면 두 개의 상수를 사용하여 해당 조인트에 적용되는 힘을 계산합니다. 마지막으로, 총 힘이 2보다 크면 조인트를 삭제합니다.
var reactionForceX, reactionForceY, reactionForce;
if (shipJoint) {
reactionForceX = physics_joint_get_value(shipJoint, phy_joint_reaction_force_x);
reactionForceY = physics_joint_get_value(shipJoint, phy_joint_reaction_force_y);
reactionForce = sqrt((reactionForceX + reactionForceX) + (reactionForceY + reactionForceY));
if (reactionForce > 2) {
physics_joint_delete(shipJoint);
shipJoint = -1;
}
}
활용 예제
- 조인트 삭제 조건 설정
- 특정 조건을 만족할 때 조인트를 삭제하여 게임의 물리적 상호작용을 조정할 수 있습니다.
if (someCondition) {
physics_joint_delete(jointID);
}
- 게임 오브젝트의 상태에 따라 조인트 삭제
- 게임 오브젝트가 특정 상태에 도달했을 때 조인트를 삭제하여 게임의 흐름을 제어할 수 있습니다.
if (objectState == "destroyed") {
physics_joint_delete(jointID);
}
- 타이머를 이용한 조인트 삭제
- 일정 시간이 지난 후 조인트를 삭제하여 게임의 동작을 변화시킬 수 있습니다.
if (currentTime > deleteTime) {
physics_joint_delete(jointID);
}
- 충돌 이벤트에서 조인트 삭제
- 두 오브젝트가 충돌했을 때 조인트를 삭제하여 물리적 상호작용을 종료할 수 있습니다.
if (collisionOccurred) {
physics_joint_delete(jointID);
}
- 게임 레벨 종료 시 조인트 삭제
- 레벨이 종료될 때 모든 조인트를 삭제하여 메모리를 정리할 수 있습니다.
if (levelEnded) {
physics_joint_delete(jointID);
}