물리 조인트 값 가져오기
physics_joint_get_value
함수는 미리 정의된 상수를 사용하여 GameMaker에게 특정 조인트의 상태에 대한 정보를 요청할 수 있습니다. 이 기능은 조인트를 삭제하거나 인스턴스의 동작을 변경하는 데 매우 유용합니다. 이 함수에서 사용할 수 있는 여러 상수는 물리 조인트 상수에 나와 있으며, 호출 시 복잡한 계산이 수행되므로 주의해서 사용해야 합니다. 또한 많은 상수가 특정 조인트 유형에만 고유하다는 점도 유의해야 합니다.
문법
physics_joint_get_value(joint, value)
인수 설명
인수 | 타입 | 설명 |
---|---|---|
joint | Physics Joint ID | 테스트할 조인트의 인덱스 |
value | Physics Joint Constant | 테스트할 조인트 속성의 상수 |
반환값
- 실수값 (Real)
예제
다음 코드는 "shipJoint" 변수가 조인트 인덱스를 보유하고 있는지 확인한 후, 두 개의 상수를 사용하여 해당 조인트에 적용되는 힘을 계산합니다. 마지막으로 총 힘이 2보다 크면 조인트를 삭제합니다.
if (shipJoint) {
var reactionForceX = physics_joint_get_value(shipJoint, phy_joint_reaction_force_x);
var reactionForceY = physics_joint_get_value(shipJoint, phy_joint_reaction_force_y);
var reactionForce = point_distance(0, 0, reactionForceX, reactionForceY);
if (reactionForce > 2) {
physics_joint_delete(shipJoint);
shipJoint = -1;
}
}
활용 예제
- 조인트 상태 확인 및 삭제
gml if (myJoint) { var force = physics_joint_get_value(myJoint, phy_joint_reaction_force_x); if (force < 1) { physics_joint_delete(myJoint); myJoint = -1; } }
- 조인트 속성 변경
gml if (myJoint) { var angle = physics_joint_get_value(myJoint, phy_joint_angle); if (angle > 45) { physics_joint_set_value(myJoint, phy_joint_angle, 30); } }
- 조인트 힘 모니터링
gml if (myJoint) { var forceX = physics_joint_get_value(myJoint, phy_joint_reaction_force_x); var forceY = physics_joint_get_value(myJoint, phy_joint_reaction_force_y); var totalForce = point_distance(0, 0, forceX, forceY); show_debug_message("Total Force: " + string(totalForce)); }
이러한 예제들은 physics_joint_get_value
함수를 활용하여 조인트의 상태를 확인하고, 필요에 따라 조치를 취하는 방법을 보여줍니다.