학습 매체 : 책
책이름 : 레트로의 유니티 게임 프로그래밍 에센스
저자 : 이제민
본 내용은 해당 강의 내용을 공부하면서 정리한 글입니다.
speed : 이동 속력
bulletRigidbody : Bullet 게임 오브젝트의 리지드바디 컴포넌트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
public float speed = 8f;
private Rigidbody bulletRigidbody;
void Start()
{
}
}
이동 속력 speed의 기본값을 8로 지정했다.
speed의 접근 한정자가 public이기 때문에 인스펙터 창에서 speed에 할당된 값을 변경할 수 있다.
Update( ) 메서드는 사용하지 않을 것이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
public float speed = 8f;
private Rigidbody bulletRigidbody;
void Start()
{
bulletRigidbody= GetComponent<Rigidbody>();
bulletRigidbody.velocity = transform.forward * speed;
}
}
transform.forward * speed는 앞쪽 방향(transform.forward)에 이동 속력(speed)을 곱해서 '게임 오브젝트의 앞쪽 방향으로 speed만큼의 속도'를 표현한 값이다. 따라서 탄알은 앞쪽으로 초당 speed만큼 이동한다.
여기서 transform.forward는 현재 게임 오브젝트의 앞쪽 방향(Z축 방향)을 나타내는 Vector3 타입 변수이다.
트랜스폼 컴포넌트는 게임 오브젝트의 위치, 크기, 회전을 담당하는 컴포넌트이다. 따라서 모든 게임 오브젝트가 하나씩 가지고 있도록 강제되어 있으며 가장 자주 사용되는 컴포넌트이다.
편의상 유니티의 C# 스크립트들은 자신의 게임 오브젝트의 트랜스폼 컴포넌트를 코드 상에서 transform 변수로 즉시 접근할 수 있다. 따라서 트랜스폼 컴포넌트는 GetComponent<Transform>( ) 등을 사용하여 직접 찾아오는 과정을 거칠 필요가 없다.
transform으로 자신의 트랜스폼 컴포넌트에 바로 접근한 다음 트랜스폼 컴포넌트가 제공하는 forward 변수로 게임 오브젝트의 앞쪽 방향을 알 수 있다.
transform.forward
transform과 Transform
- 소문자로 시작하는 transform은 변수이고, 대문자로 시작하는 Transform은 타입이다. 혼동하지 말자.
게임 도중에는 탄알이 굉장히 많이 생성될 것이다. 플레이어가 피한 탄알은 게임 화면 바깥으로 영원히 움직이면서 게임 화면에서는 보이지 않지만 씬에 계속 남게 된다.
이러면 컴퓨터 메모리를 엄청나게 낭비하게 된다. 따라서 탄알이 생성된 후 일정 시간이 흐르면 탄알이 스스로 자동 파괴되게 하자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
public float speed = 8f;
private Rigidbody bulletRigidbody;
void Start()
{
bulletRigidbody= GetComponent<Rigidbody>();
bulletRigidbody.velocity = transform.forward * speed;
Destroy(gameObject, 3f);
}
}
void Destroy(Object obj);
void Destroy(Object obj, float t);
다음 강의에서 계속~