Project view 에서 우클릭하고
스크립트를 만들고 유니티와 Visual Studio를 연동해 실행하였다.
그런데 한글로 주석을 달았는데 Inspector view에서 볼 때 한글 깨짐이 발생하였다.
Inspector view 스크립트 한글 깨짐 해결
프로젝트 파일에 .editorconfig 파일을 추가하면 해결된다.
다음 순서대로 따라하면 된다.
1. 프로젝트 파일 열기
해당 스크립트 파일이 어디 저장되는지 위치를 알아야한다.
프로젝트 뷰에서 해당 스크립트 파일을 우클릭하고 Show in Explorer 해서 열면된다.
2. 아무 이름의 텍스트 파일 생성하고 해당 내용 입력하기
root = true
[*]
charset = utf-8
위 내용을 위 사진처럼 텍스트에 입력한다.
3. 해당 텍스트 파일 확장자를 editorconfig로 변경한다.
방금 만들었던 텍스트 파일(내 경우 dd.txt) 의 파일명과 확장자를 모두 지우고 이렇게 .editorconfig 로 바꿔준다.
결과 )
그러면 이렇게 Inspector view 에서 한글 주석의 글자가 안 깨지고 잘 나온다.
Script 만들기
그럼 다시 Script 만들기로 돌아가자
Ball.cs를 open하면 VS와 연동되어 VS로 파일이 열리게 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// MonoBehaviour는 유니티에서 생성하는 모든 스크립트가 상속받는 기본 클래스
// MonoBehavior에 구현되어있는 기능들을 사용할 수 있음
// 참고로 아래의 Start, Update 메서드 또한 MonoBehavior에서 구현된 기능들이다.
public class Ball : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
void Update()
유니티에서 공이 굴러가는 것도 사실 매 프레임마다 공의 위치를 옮겨서 화면에 그려져서 구현이 되는 것이다.
업데이트에 코드를 넣으면 그 코드가 매 프레임마다 실행되면서 다양한 게임의 로직을 구현할 수 있다.
어떻게 동작하는지 확인하기 위해
void Start() {
Debug.Log("Start");
}
이 스크립트가 실행되기 위해서는 게임 오브젝트에 컴포넌트로 추가되어 있어야 한다.
오브젝트로 드래그해서 넣어주면 된다.
인스펙터 뷰에서 Ball 오브젝트에 스크립트가 추가된 것을 확인할 수 있다.
결과 )
시작과 동시에 Start가 찍힌다.
그럼 이제 공이 굴러간 거리를 구하는 스크립트를 작성해보자
Transform.position 이용하면 된다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// MonoBehaviour는 유니티에서 생성하는 모든 스크립트가 상속받는 기본 클래스
// MonoBehavior에 구현되어있는 기능들을 사용할 수 있음
// 참고로 아래의 Start, Update 메서드 또한 MonoBehavior에서 구현된 기능들이다.
public class Ball : MonoBehaviour {
float startingPoint;
// Start is called before the first frame update
void Start() {
Debug.Log("Start");
startingPoint = transform.position.z;
}
// Update is called once per frame
void Update() {
float distance;
distance = transform.position.z - startingPoint;
Debug.Log(distance);
}
}
결과 )
Transfrom 사용
물체 좌우로 움직이게 하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Obstacle : MonoBehaviour {
float delta = -0.1f;
void Start() {
}
void Update() {
float newXPosition = transform.position.x + delta;
float yPosition = transform.position.y;
float zPosition = transform.position.z;
transform.position = new Vector3(newXPosition, yPosition, zPosition);
if (transform.position.x < -4.5) {
delta = 0.1f;
}
else if (transform.position.x > 4.5) {
delta = -0.1f;
}
}
}
실행 결과 )
GetComponent 사용
> Rigidbody
Ball의 Rigidbody 컴포넌트를 사용해보자
Use Gravity 값을 확인하고 체크된 경우 콘솔창에 true를 띄우고 아니면 false를 띄워보자
Ball의 스크립트에 작성
void Start() {
Rigidbody myRigidbody = GetComponent<Rigidbody>();
Debug.Log("UseGravity? : " + myRigidbody.useGravity);
}
GetComponent를 해서 Rigidbody 컴포넌트를 사용할 수 있다.
실행 결과 )
Use Gravity가 체크되어 있으므로 True가 표시된다.
마찬가지로 만약 Ball의 Sphere Collider 컴포넌트를 가져오고 싶다면
public class Ball : MonoBehaviour {
SphereCollider myCollider;
void Start() {
myCollider = GetComponent<SphereCollider>();
}
void Update() {
myCollider.radius = myCollider.radius + 0.01f;
}
}
해주면 Collider가 점점 커지는 것을 확인할 수 있다.
이렇게 GetComponent를 통해서 스크립트에서 컴포넌트의 값을 읽고 조작할 수 있다.
카메라 움직이기
우선 카메라에 적용할 스크립트를 만들고 카메라에 드래그한다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour {
// 우선 카메라가 공의 위치를 알아야 함
GameObject ball;
void Start() {
ball = GameObject.Find("Ball");
}
void Update() {
Debug.Log("Ball is at " + ball.transform.position.z);
// 카메라 위치 공 위치에 따라 움직이기
transform.position = new Vector3(
ball.transform.position.x,
ball.transform.position.y + 3,
ball.transform.position.z - 10);
}
}
실행 결과 )
'Unity > Unity 공부' 카테고리의 다른 글
#2 Unity 물리 엔진 (0) | 2022.12.21 |
---|---|
#1 Unity 화면 구성, 게임 오브젝트, 컴포넌트 (0) | 2022.12.21 |