일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오픽 im1 5일
- 크래프톤 게임 정글 랩
- unity 설치
- unity 개발
- 유니티 퀘스트
- 게임 개발 독학
- unity 공부
- 크래프톤
- ETRI 연구연수
- 게임 개발
- 유니티 대화
- node.js
- unity
- 크래프톤 정글 게임 랩
- unity 강의
- unity 게임
- 유니티 체스
- 유니티 독학
- protobuf 란?
- 크래프톤 정글 게임랩
- 게임 독학
- Unity Chess
- unity 게임 개발
- 크래프톤 정글랩
- Unity 독학
- 유니티 스토리
- 유니티
- 오픽 im1
- protobuf란
- 유니티 미연시
- Today
- Total
하참이의 아이디어노트
Unity 강의 1일차 (12) - 스크립트로 게임 오브젝트 변경 본문
다음 작성 내용은 아래 문서들을 참고하여 작성 한 내용입니다. 학습 도중 더욱 자세한 내용이 궁금하다면 문서를 참고해시거나, 댓글로 질문을 주시면 성심성의껏 답변 드리겠습니다.
스크립트로 게임 오브젝트 변경 - Unity Learn
이 튜토리얼에서는 스크립팅에 대해 배운 내용을 게임 오브젝트에 적용하여 씬에서 확인할 수 있는 변화를 적용해 보겠습니다. 이 튜토리얼에서 배울 내용은 다음과 같습니다. 새로 만든 C# 스
learn.unity.com
지난 시간에는 스크립트를 생성하는 법을 배워보았습니다.
이제 본격적으로 스크립트로 게임에 영향을 끼칠 수 있는 것들을 해볼까요? 이번 시간에는 스크립트로 공의 크기를 바꿀 것 입니다.
Scripts 폴더 안에 BallTransform 스크립트를 생성합니다.
그리고 다음과 같이 수정합니다. 코드를 제공해드리겠습니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BallTransform : MonoBehaviour
{
public Vector3 scaleChange;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.localScale += scaleChange;
}
}
추가된건 변수 Vector3 scaleChange의 선언, 그리고 Update함수의 내용입니다.
Vector3 scaleChange는 3차원 벡터입니다. X, Y, Z축에 길이로 나타낼 수 있는 값이 있습니다.
그리고 Update함수 안에 적힌 내용은 프레임이 지나갈수록 게임오브젝트(이것을 transform.localScale)의 크기를 벡터 scaleChange만큼 변경하라는 의미입니다.
그런데.. scaleChange에 값을 넣은적이 없는데요? 여기서 알아야 할 중요한 사항이 2가지 있습니다.
1. Vector3은 별도의 선언이 없으면 0, 0, 0 으로 초기화 된다.
2. public으로 선언한 변수 값은 Unity Editor에서 수정할 수 있다.
Vector 값들이 전부 0으로 초기화되어있으면 크기의 변경이 없을 것 이었습니다. 따라서 저희는 Unity Editor에서 scale을 Change해줘야 합니다. Unity Editor로 넘어가봅시다.
번거로워보이는 공이 매우 많네요. 전부 제거하고 프리팹이 있지 않은 새로운 구체 오브젝트를 생성합시다.
직관적으로 보이도록 구체에 파란색 머터리얼을 추가하고, 천장을 비활성화 해봅시다.
이제 구 오브젝트에 작성한 스크립트 컴포넌트를 추가해봅니다.
이전에 봤던 HelloWorld 스크립트에는 존재하지 않던 Scale Change 속성이 컴포넌트에서 변경 할 수 있도록 등장했습니다. Vector3 이므로 X, Y, Z 값을 수정 할 수 있게 되어있고 각각 0, 0, 0으로 초기화되어있네요.
값을 각각 1, 1, 1로 바꾸고 게임을 실행해봅시다. 공이 엄청난 속도로 커지는 것을 확인 할 수 있습니다. 매우 작은 값 (예, 0.01)을 넣어서도 테스트 해봅시다.
크기 말고 다른 변경을 할 수 있는 코드도 제공해드리겠습니다. 한 번 씩 해보시길 바라겠습니다.
위치 변경
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrackPosition : MonoBehaviour
{
public Vector3 positionChange;
// Start는 첫 프레임 업데이트 전에 호출됨
void Start()
{
}
// Update는 프레임당 한 번씩 호출됨
void Update()
{
transform.position += positionChange;
}
}
회전 변경
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlatformRotate : MonoBehaviour {
public Vector3 rotateChange;
// Start는 첫 프레임 업데이트 전에 호출됨
void Start()
{
}
// // Update는 프레임당 한 번씩 호출됨
void Update()
{
transform.Rotate (rotateChange);
}
}
이제 사물들을 움직일 수도 있습니다! 벌써 게임 캐릭터가 움직이고 목적지에 도달하는 장면이 상상이 되네요.
화이팅입니다!
'Unity > Unity 기초' 카테고리의 다른 글
Unity 강의 2일차 (1) - 차량, 비행기 조종 게임 프로그래밍 (0) | 2025.01.16 |
---|---|
Unity 강의 1일차 (13) - 배경 음악 추가 (0) | 2025.01.16 |
Unity 강의 1일차 (10) - 에셋 다운로드 (0) | 2025.01.16 |
Unity 강의 1일차 (9) - 프리팹 응용 (0) | 2025.01.15 |
Unity 강의 1일차 (8) - 프리팹 (0) | 2025.01.15 |