구슬 골프
Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 62번째.
작은 그린에서 구슬로 골프를 쳐 보세요. 구슬은 티에서 시작합니다. 화살표로 방향을 조준하고, 스페이스바를 눌러 힘을 모은 뒤 놓아 쏘세요. 구슬은 굴러가며 쿠션과 가운데 블록에 부딪히고, 속도가 줄어들다가 충분히 느려지면 완전히 멈춥니다. 그때가 되어야 다시 쏠 수 있습니다. 천천히 컵에 굴러 들어간 구슬은 컵 안으로 떨어지지만, 너무 빠르게 도착한 구슬은 컵을 그대로 지나쳐 굴러갑니다. 타수가 적을수록 좋습니다.
스크립트 두 개를 작성하세요. 구슬에는 Golf를, 컵에는 Hole을 사용하세요.
챌린지
어려움Inspector에서 Golf에 pointer(작은 노란 공), aimSpeed(90), chargeRate(4), maxPower(6), stopSpeed(0.3)를 설정합니다. 구슬의 질량은 0.5입니다.
- 조준 방향은 y축을 중심으로 한 각도이며, 시작 시에는 0(정면, +z)입니다. 오른쪽 화살표를 누르면 오른쪽으로, 왼쪽 화살표를 누르면 왼쪽으로
aimSpeed도/초의 속도로 회전합니다. 매 프레임마다 조준 방향으로 구슬에서 1단위 떨어진 곳에 포인터를 둡니다. - 구슬의 속도가
stopSpeed보다 낮으면 정지 상태입니다. 매 물리 단계에서 정지 상태인 구슬을 완전히 멈춥니다. 속도와 각속도를 0으로 설정합니다. - 구슬이 정지해 있을 때만: 스페이스바를 누르고 있으면 초당
chargeRate만큼 파워가 충전되며,maxPower를 넘지 않습니다. 스페이스바에서 손을 떼면 조준 방향으로 해당 파워만큼의 Impulse를 가해 구슬을 칩니다. 그런 다음 파워는 0으로 돌아가고, publicint strokes가 1 증가하며Stroke 1로 로그에 기록됩니다.
Inspector에서 Hole에 sinkSpeed(3)를 설정합니다.
- 구슬(
Golf스크립트가 붙은 오브젝트)이sinkSpeed보다 느린 속도로 컵에 들어오면 타수를In the cup in 2 strokes!로 로그에 기록하고 구슬을 비활성화합니다. 더 빠른 구슬은 굴러서 지나갑니다.
Play를 누르고 가능한 한 적은 타수로 구슬을 홀에 넣은 다음 Check를 누르세요.
직접 해보기
using UnityEngine;
public class Golf : MonoBehaviour
{
public int strokes = 0;
[SerializeField] private Transform pointer;
[SerializeField] private float aimSpeed = 90f;
[SerializeField] private float chargeRate = 4f;
[SerializeField] private float maxPower = 6f;
[SerializeField] private float stopSpeed = 0.3f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
// 화살표 키로 조준하고, Space로 힘을 모았다가 놓으면 발사하며, 속도가 느려지면 멈춥니다
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.