사물 사이의 거리
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 28번째.
Vector3.Distance(a, b)는 세 축을 모두 통과하는 직선을 따라 측정한 두 점 사이의 거리이며, 단위로 표현됩니다. 두 점 사이의 간격인 (a - b).magnitude의 길이이므로 a와 b의 순서는 중요하지 않습니다. (0, 0, 0)에서 (3, 0, 4)까지의 거리는 5입니다.
거리를 숫자와 비교하면 스크립트는 무언가가 가까이 있는지 알 수 있습니다. 이 캠핑객은 캠프파이어 위치를 Inspector에서 설정하며, 캠프파이어에서 4단위 이내에 있을 때만 손을 녹일 수 있습니다.
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}거리는 높이도 계산합니다. 불보다 5단위 높은 곳에 있는 캠핑객은 불에서 0이 아니라 5단위 떨어져 있습니다. 높이를 계산하지 않아야 할 때는 y가 같은 두 점을 비교하세요.
챌린지
쉬움늪에서 보행자의 속도를 절반으로 줄이세요.
float s = speed;아래에if (Vector3.Distance(transform.position, swamp) < 3f)를 작성하세요.- 그 안에서
s = speed / 2;로 설정하세요.speed필드와 이동 코드는 그대로 두세요.
‘플레이’를 누르고 늪을 똑바로 가로질러 걸어가세요. 보행자의 속도가 늪에서 느려집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// swamp에서 3유닛 이내에서는 절반 속도로 이동합니다.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드