일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 유니티허브
- 기호 상수
- 유니티
- 극장 예약 프로그램
- 프로젝트 목록 제거
- scanf 오류
- round()함수
- 두 수 크기 비교 함수
- 난수 값 맞추기 게임
- 2차원 배열
- 전처리기 정의
- 키입력값 받기
- GetAxis()메서드
- UnityHub
- Axes
- 개인 정리
- time.h
- 반사 벡터
- 문자 분류
- ASCII CODE TABLE
- Logic Gates
- AWS Discovery Book
- 소스코드 하이라이팅
- 논리 게이트
- 두 값 교체하기
- Unity
- 미리 컴파일된 헤더 사용안함
- C언어
- 배열 사용X
- C 언어
- Today
- Total
flrto
Unity에서 트랜스폼(transform) 본문
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
public float speed = 8f; // 탄알 이동 속력
public Rigidbody bulletRigidbody; // 이동에 사용할 리지드바디 컴포넌트
void Start()
{
// 게임 오브젝트에서 Rigidbody 컴포넌트를 찾아 bulletRigidbody에 할당
bulletRigidbody.GetComponent<Rigidbody>();
// 리지드바디의 속도 = 앞쪽 방향 * 이동 속력
bulletRigidbody.velocity = transform.forward * speed;
}
void Update()
{
}
}
|
다음 코드는 유니티에서 게임 오브젝트에 움직임을 주려 할때 사용하는 예시 코드이다.
여기서 실제 움직임을 주는 코드 소스가 이 부분 이란걸 알수 있다.
bulletRigidbody.velocity = transform.forward * speed;
velocity에 관한건 이 글에서 포스팅 했었다.↓
2019/05/17 - [Unity/TIL] - Unity에서의 키입력으로 오브젝트를 이동시키는 방법
Unity에서의 키입력으로 오브젝트를 이동시키는 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 using System.Collections; using System.Collections.Generic; using UnityEngine;..
gcoding.tistory.com
자 그럼 메인인 transform에 대해 설명해보자
transform
Transform 타입의 변수 transform은 자신의 게임오브젝트 트랜스폼 컴포넌트로 바로 접근하는 변수이다.
트랜스폼 컴포넌트는 잘 알다시피 게임 오브젝트의 위치, 회전, 크기 를 담당하는 컴포넌트이다.
오브젝트를 생성하면 기본적으로 생성되는 것에서 알 수 있듯이 모든 게임 오브젝트가 하나씩 가지고 있도록 강제되어있다. 트랜스폼 컴포넌트가 없으면 3D공간에서 위치,공간,크기를 가질 수 없기 때문이다.
편의상 유니티의 C#스크립트들은 자신의 게임 오브젝트의 트랜스폼 컴포넌트를 코드상에서 transform 변수로 즉시 접근 할 수 있도록 구성되어있다.
따라서,
bulletRigidbody.GetComponent<Rigidbody>(); 리지드바디 컴포넌트를 GetComponent를 가져오는 것 처럼
transform 컴포넌트를 GetComponent<Transform>(); 이런식으로 가져올 필요는 없다!!!
bulletRigidbody.velocity = transform.forward * speed;
그러면 위 코드에서 transform.forward * speed; 이부분은 자신의 transform컴포넌트에 접근해서 forward(현재 게임 오브젝트에서 앞쪽방향에 우리가 설정한 speed만큼의 값을 곱해주는것이란걸 알 수 있다.
※ 참고 transform은 변수이고 Transform은 타입이다.
gameObject가 변수이고 GameObject가 타입이듯이...
'Unity > TIL' 카테고리의 다른 글
GetAxis()메서드와 입력매니저(Input Manager) (0) | 2019.05.17 |
---|---|
Unity에서의 키입력으로 오브젝트를 이동시키는 방법 (0) | 2019.05.17 |
GetComponent<>(); 의 제네릭(Generic) 기법 (0) | 2019.05.17 |
Unity에서 gameObject 와 GameObject의 차이 (0) | 2019.05.17 |
Unity에서 사용 할 변수타입들 (0) | 2019.05.13 |