게임 개발, 특히 시뮬레이션 게임 또는 샌드 박스 게임에서는 맵의 무한 루프 효과를 실현해야하므로 플레이어는 무의식적으로 맵을 이동할 때 시작점으로 돌아와 "경계없는"가상 세계를 만들 수 있습니다. 이 맵 루프의 구현은 일반적으로 좌표계의 지속적인 업데이트 및 제한에 따라 다릅니다. PHP는 게임 로직에서는 상대적으로 드물지만 강력한 스크립팅 언어로서 웹 측 게임 또는 서버 측 로직 인 PHP와 관련하여 일부 데이터 작업 및 기능 모듈을 효과적으로 처리 할 수 있습니다.
이 기사에서는 PHP의 FMOD () 함수를 사용하여 MAP 루프 기능을 구현하는 방법에 중점을 둘 것입니다. 특히, 플레이어의 현재 위치 및 맵 크기를 계산하여 fmod () 함수를 사용하여 플레이어가 맵의 가장자리에 도달 할 때 자동으로 반대쪽 시작 위치로 돌아갈 수 있도록하십시오.
fmod () 함수는 부동 소수점 번호의 분할을 계산하는 PHP의 나머지 함수입니다. 기본 구문은 다음과 같습니다.
fmod(float $x, float $y): float
$ X : 분할.
$ y : divisor.
이 함수는 나머지를 x 로 y 로 나눈 값을 반환합니다. 예를 들어, FMOD (10, 3) 가 있으면 나머지 10 이 3 으로 나뉘어져 있기 때문에 1을 반환 합니다.
시뮬레이션 게임에서 맵의 경계는 일반적으로 사전 정의되며 변수를 사용하여 MAP_WIDTH 및 MAP_HEIGHT 와 같은 맵의 너비와 높이를 나타낼 수 있습니다. 플레이어의 위치는 또한 좌표계로 표시됩니다. 플레이어가 움직일 때 플레이어의 현재 위치가지도의 경계를 초과하는지 여부를 결정해야합니다. 그것을 초과하면 플레이어의 위치는 fmod () 함수를 통해 다시 계산되어 반대쪽으로 돌아갑니다.
플레이어의 현재 위치가 (player_x, player_y) , map_width 및 map_height 가 맵의 너비와 높이라고 표현한다고 가정합니다. 플레이어가지도의 가장자리에 도달 할 때 "루프"를 할 수 있도록 fmod ()를 사용하여 처리 할 수 있습니다.
// 맵의 크기를 정의하십시오
$map_width = 1000; // 맵 너비
$map_height = 1000; // 지도 높이
// 플레이어의 현재 위치를 정의하십시오
$player_x = 1100; // 플레이어x동등 어구
$player_y = 1200; // 플레이어y동등 어구
// 사용 fmod() 来循环플레이어的位置
$player_x = fmod($player_x, $map_width);
$player_y = fmod($player_y, $map_height);
// 만약에 fmod() 음수를 반환합니다,수정하려면지도의 너비 또는 높이를 추가하십시오.
if ($player_x < 0) {
$player_x += $map_width;
}
if ($player_y < 0) {
$player_y += $map_height;
}
// 输出플레이어的最终동등 어구
echo "플레이어的동등 어구是:($player_x, $player_y)";
위의 코드에서 FMOD ($ player_x, $ map_width)는 맵 너비 내에서 플레이어의 수평 좌표의 나머지 부분을 계산하므로 플레이어의 X 좌표가 맵의 경계 (예 : 1100)를 초과하더라도 [0, 1000) 범위로 다시 조정됩니다. 좌표가 음수 인 경우 맵의 너비를 추가하여 좌표가 유효한 범위 내에 있습니다.
fmod () 의 장점은 나머지 플로팅 포인트 번호를 처리 할 때 정밀 문제로 인해 예기치 않은 오류를 일으키지 않는다는 것입니다. 대조적으로, 평범한 나머지 계산은 일부 부동 소수점 오류가 발생할 수 있습니다. fmod ()를 사용하면 정확한 루핑 효과가 보장됩니다. 특히 게임 세계에서 지속적인 움직임 및 경계 문제를 처리 할 때 정밀도가 매우 중요합니다.
좌표계 외에도 게임은 플레이어의 관점의 회전 또는 객체의 움직임을 포함 할 수 있습니다. 이 경우 FMOD () 를 통해 각도와 방향을 처리하여 객체가 가장자리에서 시작점으로 부드럽게 돌아 오는지 확인할 수 있습니다. 예를 들어, 회전 각도를 처리하기 위해 fmod ()를 사용하는 것도 플레이어가 맵의 경계 주위를 움직일 때 매우 효과적입니다.
// 定义플레이어的旋转角도
$player_angle = 450; // 플레이어旋转角도,학위 단위
// 각도를 제한하십시오 0 도착하다 360 학위 사이
$player_angle = fmod($player_angle, 360);
// 만약에角도为负数,양수로 정확합니다
if ($player_angle < 0) {
$player_angle += 360;
}
echo "플레이어的旋转角도是:$player_angle 도";
이 논리는 맵의 번역뿐만 아니라 객체의 회전 또는 캐릭터의 관점 제어와 같이 "둘러싸여"게임의 다른 동작에도 적용됩니다.
시뮬레이션 게임 개발에서 PHP의 FMOD () 함수를 사용하면 MAP 루프 문제를 매우 쉽게 처리 할 수 있습니다. FMOD () Sensible을 사용하면 플레이어의 위치와 게임 요소가 경계를 가로 질러 다른쪽으로 부드럽게 돌아와서 완벽한 게임 세계를 만들 수 있습니다. 좌표 계산, 객체 이동 또는 각도 제어이든 FMOD () 는보다 자연스러운 루프 효과를 달성하는 데 도움이되는 매우 유용한 도구입니다.