전체 글 485

[Unity][방법] Object충돌(Collision)_3 Ray사용하여 마우스 클릭좌표 얻기

Local -> Word > ViewPort -> Screen(화면) Input.mousePosition; //스크린 좌표 픽셀좌표 Camera.main.ScreenToViewportPoint(Input.mousePosition); // 특정 픽셀의 비율좌표 Ray 사용권장 #region Ray 사용한방법 if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Debug.DrawRay(Camera.main.transform.position, ray.direction * 100.0f, Color.red, 1.0f); RaycastHit hit; if (Physics.Raycast(ray, o..

Unity 2022.10.05

[Unity][방법] Object충돌(Collision)_2 RaycastHit 레이저사용하기

RaycastHit[] hits; - 충돌된 오브젝트 변수 Physics.RaycastAll - 레이저 Debug.DrawRay(transform.position + Vector3.up, look * 10, Color.red); - debug를 통해 레이저 발사 방향 확인 void Update() { Vector3 look = transform.TransformDirection(Vector3.forward);//지역포지션 캐릭터 방향으로 레이저 발사를 위해. Debug.DrawRay(transform.position + Vector3.up, look * 10, Color.red);//debug를 통해 레이저 발사 방향 확인 #region 여러개 확인 RaycastHit[] hits; hits = Phys..

Unity 2022.10.05

[Unity][방법] Object충돌_1(Collision) OnCollisionEnter, OnTriggerEnter, OverlapSphere(설정반경오브젝트 확인) 방법

OnCollisionEnter OnCollisionEnter 보통 서든어택 같은 fps에서 사용할때 좋다. 총알이 맞은 후 행위 1) 나한테 혹은 상대에게 RigidBody가 있어야한다(IsKinematic : off) 2) 나한테 Collider가 있어야한다(IsTrigger : off) 3) 상대한테 Collider가 있어야한다(IsTrigger : off) IsKinematic - unity 물리엔진 사용유무 mass - 질량 public class TestCollision : MonoBehaviour { //1) 나한테 혹은 상대에게 RigidBody가 있어야한다(IsKinematic : off) //2) 나한테 Collider가 있어야한다(IsTrigger : off) //3) 상대한테 Coll..

Unity 2022.10.05

[C#] 제네릭 형식 제약 조건(Where)

목차 목차 제네릭 제약 조건 추가 제네릭 제약 조건 종류 new 제약 조건 notnull 제약 조건 unmanaged 제약 조건 기반 클래스 이름 제약 조건 인터페이스 이름 제약 조건 U 제약 조건 멀티 제약 조건 제네릭(Generic)은 특정 데이터 타입(Data Type)에 국한되지 않고 모든 타입을 허용하는 제네릭 메서드와 제네릭 클래스를 구현할 수 있지만, 특정 조건에만 대응되는 데이터 타입이 필요한 경우가 있습니다. 이러한 경우 where 키워드를 사용하여 제약 조건을 추가할 수 있으며, 제약 조건을 만족하지 않는 경우 컴파일 에러가 발생하도록 할 수 있습니다. 이번 포스팅에서는 제네릭 제약 조건이 무엇인지 정리하였습니다. 목차 제네릭 제약 조건 추가 제네릭 제약 조건 종류 멀티 제약 조건 제..

VisualStudio/C# 2022.10.05

[Unity][방법] 프리팹 C#에서 생성 Instantiate

Instantiate(프리팹)를 사용하면 프리팹 객체를 인스턴스화 할 수 있다. public GameObject prefab; void Start() { Instantiate(prefab); } Destory(프리팹, 몇초후 사라질지)를 사용하면 프리팹 객체 인스턴스 메모리를 해제할 수 있다. public GameObject prefab; GameObject tank; void Start() { tank= Instantiate(prefab); Destroy(tank, 3.0f); } 프로젝트의 규모가 컨진다면 프리팹을 GameObject에 직접 연결하여 사용하기 힘들어진다. 그렇기 때문에 Resources파일에 Load를 사용하여 프리팹을 연결하여 사용한다. Resources파일에는 소스를 제외한 모든 ..

Unity 2022.10.04

[Unity][개념,방법] Rotation과 캐릭터 회전

Unity에서는 Quaternion을 사용하여 회전을 하는데 Vector3와 다르게 W 값이 추가로 존재한다. 이는 짐벌락이란 문제를 해결하기 위해 나온 방법이라고 한다. Quaternion과 짐벌락 관계는 이런 내용이다 1.x축, y축, z축 각각의 회전행렬을 만든다.yaw(y축 회전각) pitch(x축), roll(z축) 2. 회전 행렬을 객체의 변환행렬과 각각 순서대(x, y, z)로 곱한다.(오일러각) 3.x축을 90도 틀고난 후 y축으로 90도 튼 것과 y축을 90도 틀고난 후 z 축으로 90도 튼 것과의 회전 값이 같다. 4. 세 개의 축 각을 이용하여 항상 순서대로 회전을 하면 위와 같이 한 개의 축이 쓸모없게 된다. 이 현상이 짐벌락이다. 5. 이 문제는 계산을 한 번에 하지 않아서(세 번..

Unity 2022.10.04

[Unity][개념,방법] 오브젝트 이동 (Vector, Normalized, Magnitude)

Vector는 사용에 따라 위치와 방향 두 가지를 표현할 수 있다.벡터의 크기(  Length )벡터의 방향( Normalize )로컬포지션과 월드포지션 변환월드 → 로컬 변환transform.InverseTransformDirection(Vector3.forward);로컬 → 월드 변환transform.TransformDirection(Vector3.forward);Vector이동Translate  - 현 위치에서 new vector만큼 이동시킨다.transform.Translate( new Vector2(1,1) * Time.deltaTime)Magnitude ( 벡터의 크기 구하기 )Magnitude는 벡터의 길이(크기)를 반환하며, 이를 통해 거리 또는 속도를 계산할 수 있습니다.(목적지 - 현재..

Unity 2022.10.04

[Unity][방법] 특정 지역으로 오브젝트 이동효과

1. MoveTowards (현재 위치, 목표 위치, 속력) transform.postion() 은 오브젝트의 위치를 결정하는 함수입니다. Vector3.MoveTowards(현재 위치, 목표 위치, 속력) 은 해당 값들을 매개변수로 사용합니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour { Vector3 destination = new Vector3 (3, 4, 5); void Update() { transform.position = Vector3.MoveTowards(transform.position, destination, 1); } } gi..

Unity 2022.09.23

[Unity][방법] 투명 Material 생성 방법

GameObject에 기본 Material을 넣고 Color 에서 알파값을 변경하여도 실제 오브젝트에 알파값이 적용 되지 않습니다. 방법 1 아래 이미지와 같이 쉐이더를 선택한 후 Standard -> Legacy Shaders -> TransParent -> Diffuse로 변경한 후 알파값을 조정하면 투명이 적용되는 GameObject를 만들 수 있다. RGBA 의 A 의 값을 조정해보면 아래 이미지와 같이 큐브의 알파값이 적용이 됩니다. 방법2 아래 이미지와 같이 쉐이더를 선택한 후 Standard -> UI -> Unlit -> Transparent로 변경한 후 알파값을 조정하면 투명이 적용되는 GameObject를 만들 수 있다.

Unity 2022.09.23

[C#] C# 7.0 에서 편리해진 out 파라미터 사용방법

회사에서 평소와 같이 개발을 진행하던 중, 다음과 같은 문구를 만나게 되었습니다. 자세히 보니까, 해당 변수를 인라인으로 선언할 수 있다는 말이었습니다. 찾아보니까, C# 7.0 부터는 out 파라미터를 보다 간단하게 사용할 수 있더라고요. 그걸 의미하는 문구였습니다. 그럼 어떻게 간단하게 사용하는지 예제 코드를 통해서 보여 드리도록 하겠습니다. 예제 코드 기존에는 먼저 out 파라미터에 들어가는 변수를 먼저 1차적으로 선언해야 했습니다. 그 다음에 매개변수로 해당 변수를 넘겨서 값은 저장하는 식이었지만, C# 7.0 부터는 변수 선언을 생략하고 매개변수로 바로 전달할 수 있도록 바뀌었습니다. using System; using System.Net; using System.Net.Sockets; name..

VisualStudio/C# 2022.09.20

[Unity][개념] Job 시스템 이해, IJobParallelFor- (4)

※ JobHandle을 보기 전, Job 시스템의 이해가 필요하다면 하단의 게시물을 참고 https://everyday-devup.tistory.com/97 [Unity] Job 시스템 이해, IJob - (1) ● Unity의 Job 시스템에 대한 이해가 필요하다면, 다음의 게시물을 참고 https://everyday-devup.tistory.com/69 [Unity] DOTS - 프로세스, 스레드, C# Job 시스템 ECS를 알아보기 전 DOTS에 대해 궁금한 점이.. everyday-devup.tistory.com ● Interface IJobParallelFor ▶ IJob이 단일 워커 스레드에서 Execute()가 한번 처리되었다면, IJobParallerFor는 사용 가능한 모든 워커 스레드..

Unity 2022.09.20

[Unity][개념] Job 시스템 이해, JobHandle - (3)

※ JobHandle을 보기 전, Job 시스템의 이해가 필요하다면 하단의 게시물을 참고 https://everyday-devup.tistory.com/97 [Unity] Job 시스템 이해, IJob - (1) ● Unity의 Job 시스템에 대한 이해가 필요하다면, 다음의 게시물을 참고 https://everyday-devup.tistory.com/69 [Unity] DOTS - 프로세스, 스레드, C# Job 시스템 ECS를 알아보기 전 DOTS에 대해 궁금한 점이.. everyday-devup.tistory.com ● JobHandle ▶ JobHandle은 Job의 Schedule을 실행했을 때 반환되는 값으로, Job을 컨트롤 할 수 있는 기능을 가진다. ▶ Job은 독립적으로 실행될 수도 있..

Unity 2022.09.20

[Unity][개념] Job 시스템 이해, NativeContainer - (2)

※ NativeContainer를 보기 전, Job 시스템의 이해가 필요하다면 하단의 게시물을 참고 https://everyday-devup.tistory.com/97 [Unity] Job 시스템 이해, IJob - (1) ● Unity의 Job 시스템에 대한 이해가 필요하다면, 다음의 게시물을 참고 https://everyday-devup.tistory.com/69 [Unity] DOTS - 프로세스, 스레드, C# Job 시스템 ECS를 알아보기 전 DOTS에 대해 궁금한 점이.. everyday-devup.tistory.com ● NativeContainer ▶ Unity에 Job 시스템은 멀티 스레드 사용 편하게 만들었지만, 일반적으로 Job의 데이터가 메인 스레드에서 접근할 수 없는 메모리에 만..

Unity 2022.09.20