플레이 화면에서 카드와 상호작용하는 스크립트의 일부

Ray&Raycast를 이용해 카드에 ray가 충돌했을 때 플레이어가 카드를 클릭한 상태임을 갱신하는 코드의 일부이다.

int.Parse()는 문자열을 정수로 변환해준다. 

다운받은 에셋들끼리 축 맞추는중...

 

'Unity > 작업&삽질노트' 카테고리의 다른 글

2021-08-12 작업일지  (0) 2021.08.12
2021-08-09 작업일지  (0) 2021.08.09
2021-08-04 작업일지  (0) 2021.08.04
2021-08-03 작업일지  (0) 2021.08.03
2021-08-02 작업일지  (0) 2021.08.02

유니티 작업중 마우스로 오브젝트와 상호작용할 수 있는 방법을 찾아보았다.

그중 하나로 Ray와 Raycast를 이용한 방법이 눈에 띄었다.

 

간단히 설명하면, 특정 위치에서 발사되는 광선를 쏘고, 그 광선과 충돌했을 때 메소드를 호출하는 방식이다.

이 방식을 사용하려면 어디로부터(origin), 어느 방향(direction)으로 Ray가 발사되는지 알아야할것이다.

내 경우에는 내가 보는 화면의 물체와 상호작용하길 원하기 때문에, 내가 클릭한 시점의 마우스 포인터 좌표로부터 내가 바라보는 카메라 방향으로 Ray를 발사해야한다.

 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 Raycast hit;
    if (physics.Raycast(ray,out hit)) {...}

첫번째 라인에서 ray 변수에 main 카메라의 방향으로 마우스가 Input된 포지션으로부터 발사된다는 정보를 담았다.

그 다음, Raycast클래스의 hit변수를 생성한다.

physics.Raycast(ray, out hit)는 ray가 물체에 충돌하면 hit에 그 정보를 할당하고 true를 리턴한다.

이를 이용해 if문으로 ray가 특정 물체에 충돌했을 때 if문 안의 내용을 실행할 수 있게 된다.

 

 

'Unity > C#' 카테고리의 다른 글

C#에서 구조체, value type  (0) 2021.09.13
[Unity/C#] Update와 FixedUpdate  (0) 2019.06.17
-C#- Awake/Start/Update  (0) 2019.06.03
-C#- 대리자(delegate)  (0) 2019.05.28
C# - Vector3  (0) 2019.04.03

유니티 및 C#을 처음 접할 때 스크립트를 생성했을때 가장 먼저 볼 수 있는 함수가 Start와 Update함수일것이다.

Update 함수는 매 프레임마다 실행되는 함수이다.

그렇다면 Start와 Awake함수는 어떤 역할을 하는 함수일까?

두 함수는 언뜻 비슷한 역할을 하는것 같지만 자세히 살펴보면 다른점이 많다.

유니티 도큐먼트를 살펴보면, Start와 Awake는 아래와 같이 서술되어있다.

  • Awake: 이 함수는 항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출됩니다. 게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않습니다.
  • Start: 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출됩니다.

두 함수 모두 Update함수 호출 이전에 호출되고, 스크립트 라이프사이클중 한번씩만 호출된다는 공통점이 있다.

그리고 두 함수의 가장 큰 차이점은 다음과 같다.

1. Awake함수는 항상 Start함수보다 먼저 호출된다.

2. Start함수는 스크립트가 활성화 되어있는 경우에만 호출된다.

 

'Unity > C#' 카테고리의 다른 글

C#에서 구조체, value type  (0) 2021.09.13
[Unity/C#] Update와 FixedUpdate  (0) 2019.06.17
[Unity/C#] Ray&Raycast  (0) 2019.06.11
-C#- 대리자(delegate)  (0) 2019.05.28
C# - Vector3  (0) 2019.04.03

C#의 대리자(delegate)는 C++의 함수 포인터의 기능과 유사하다.

오늘은 이 대리자에 대해 아주아주 간단하게 적어볼것이다 (한번에 이해가 딱 와닿질 않아서... 추후에 다시 정리해보자.)

delegate는 대리자라는 이름 그대로 메소드를 대신해서 호출하는 역할을 가진다.

 

델리게이트로 메소드를 호출하기 위해서는 반환타입과 매개변수가 모두 해당 메소드와 같은 타입이어야 한다.

delegate void Func(int);

void func(int);

 

delegate int Func2(float);

int func2(float);

 

대리자로 메소드르 호출하려면, 해당 대리자 타입으로 변수를 생성해 호출할 메소드를 참조시키면 된다.

Func delegate;

delegate = new Func(func);

 

'Unity > C#' 카테고리의 다른 글

C#에서 구조체, value type  (0) 2021.09.13
[Unity/C#] Update와 FixedUpdate  (0) 2019.06.17
[Unity/C#] Ray&Raycast  (0) 2019.06.11
-C#- Awake/Start/Update  (0) 2019.06.03
C# - Vector3  (0) 2019.04.03

유니티에서 UI를 만드는 법에 대해 간단하게 알아보겠다.

좌 우 이동버튼과 우상단의 HP게이지를 만들어 볼것이다.

캐릭터의 조작 버튼, 캐릭터의 체력 게이지 총 두 가지 UI를 만들것이다.

우선 UI에 사용될 리소스를 준비 한 후, Hierarchy탭 - Create - UI - Button 2개와 Image 1개를 생성한다.

올바르게 생성되었을 경우, Hierarchy탭에 Canvas가 생성되었을 것이고, 그 하위 오브젝트로 Button과 Image가 생성되었을 것이다.

Button의 이름을 각각 LButton, RButton으로 변경하고, Image의 이름을 hpGauge로 변경해준다.

 

Canvas 하위에 hp게이지와 버튼이 성공적으로 생성

우선 UI를 제 위치에 배치해보자.

각 UI의 Inspector창을 보면 Rect Transform 컴포넌트를 확인할 수 있다.

이곳에서 앵커라는것과 포지션을 이용해 UI를 제 위치에 배치해 보자.

왼쪽의 네모칸을 누르면 앵커를 설정 할 수 있다.

앵커는 간단히 말에서 해당 UI의 중심축을 어디에 둘 것이냐를 정하는것이다.

앵커를 hp게이지의 경우 우상단, LB RB는 각각 좌하단 우하단에 배치해보자.

 

먼저 hpGauge를 먼저 만들어보자.  

hpGauge의 Inspcetor창을 살펴보면, Image탭의 Source Image가 있을것이다.

이곳에 자신이 준비한 리소스를 드래그&드롭하면 해당 리소스가 UI에 적용된다.

해당 리소스를 드래그&드롭하면 UI에 적용할 수 있다.

같은 방법으로 LB와 RB에도 리소스를 적용시킬 수 있다.

스크립트를 통해 UI를 감독하는 방법에 대해서는 다음 포스팅을 통해 알아보겠다.

'Unity' 카테고리의 다른 글

[Unity/Android] ARMx64/IL2CPP 빌드 오류  (0) 2022.07.04

C#에서는 세 개의 float값을 이용하여 벡터(Vector3)를 나타낼 수 있다. (두 개의 float값을 이용한 Vector2도 있다.)

Vector3는 float(단정밀도 부동소수점)형의 x, y, z값을 가진 구조체이다.

이는 다음과 같이 선언 할 수 있다.

Vector3 position = new Vector3(X,Y,Z); //세 개의 요소가 각각 X, Y, Z값을 가짐.

Vector3 position = new Vector3(X); //세 개의 요소 모두 X값을 가짐.

Vector3 position = new Vector3(Vector2, Z); //지정된 Vector2개체와 Z값에서 새로운 개체 Vector3를 생성.

 

사용 가능한 메서드는 다음 링크에서 확인 가능하다.

https://docs.microsoft.com/ko-kr/dotnet/api/system.numerics.vector3?view=netframework-4.7.2

 

 

'Unity > C#' 카테고리의 다른 글

C#에서 구조체, value type  (0) 2021.09.13
[Unity/C#] Update와 FixedUpdate  (0) 2019.06.17
[Unity/C#] Ray&Raycast  (0) 2019.06.11
-C#- Awake/Start/Update  (0) 2019.06.03
-C#- 대리자(delegate)  (0) 2019.05.28

+ Recent posts