일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스 단체사진 찍기 C++
- transform.position
- 로블록스 script local script 차이
- bfs
- long int 의 차이
- rigidbody.Moveposition
- 프로그래머스 가장 큰 수 C++
- 백준 10799번 c++
- 백준 2225번 c++
- c++
- 차이
- UML Diagram 정리
- 플레이어 이동
- 유니티
- 유니티 Rigidbody 이동
- 백준
- 풀이
- 1699번
- TOPCIT 후기
- TOPCIT 문제 유형
- 코드
- 유니티 꿀팁
- 백준 11726번 C++
- 2644번
- 백준 10844번 c++
- 유니티 LTS
- 배열 stack overflow
- 백준 17299번 c++
- 백준 2193번 c++
- rigidbody.position
- Today
- Total
목록Unity (25)
Kiki Devlog
유니티에서 script 생성시 기본으로 정해진 템플릿을 내 취향에 따라 바꾸는 방법. 이 방법은 한 프로젝트에만 적용된다.(모든 프로젝트에 적용시키려면 아래 참고글 확인! 방법 비슷함) 아래 방법들은 파일 탐색기에서 실행 1. Asset 폴더 아래에 ScriptTemplates 폴더를 생성 2. 생성된 ScriptTemplates 폴더에 "81-C# Script-NewBehaviourScript.cs.txt" 이름의 텍스트 파일을 생성 텍스트 파일의 내부 내용은 이렇게 작성(여기를 자신이 원하는 템플릿으로 자유롭게 변경 가능) // 텍스트 파일 내용 using UnityEngine; using System.Collections; public class #SCRIPTNAME# : MonoBehaviour ..

Optional Chaining은 "물음표 점" 으로 표현함. 사용예시 public event Action OnInteraction; OnInteraction?.Invoke(); OnInteraction 이 null이면 -> null을 반환하고 함수는 실행하지 않음. OnInteraction 이 null이 아니면 -> OnInteraction.Invoke() 를 실행. 즉 ?. 앞의 값이 null이 아니면 "?."가 있는 자리를 "." 로 바꿔서 해석하면 됨. OnInteraction?.Invoke() // OnInteraction.Invoke(); 로 바뀌어 실행됨!
OnTriggerEnter 의 경우 Trigger 상태인 게임 오브젝트와 충돌한 순간에 실행된다. A, B 두 물체가 ontriggerenter() 을 호출하기 위해서는 1. 둘 다 collider 있어야 함 2. 적어도 한쪽은 rigidbody가 있고, istrigger 가 true 여야 함. (양쪽다 isTrigger가 true여도 됨) --> 이 조건들을 만족하면 A 와 B의 ontriggerenter() 가 둘다 호출 됨. void OnTriggerExit(Collider other) { // 원하는 코드 작성 } [참고] unity - OnTriggerEnter : is it called in both collider object? - Game Development Stack Exchange
인스펙터에서 게임 오브젝트 회전은 오일러 각으로 표시 및 편집되지만 내부적으로는 쿼터니언으로 저장된다. 자식 오브젝트 회전 시에는 월드 좌표를 사용하면 헷갈릴 수 있음(자식오브젝트의 인스펙터 창 rotation값은 부모를 기준으로 한 로컬 회전값이기 떄문) [참고] Unity의 회전 및 오리엔테이션 - Unity 매뉴얼 (unity3d.com)
Awake() 는 씬이 처음 시작될때 호출됨. 한 script에서 캐싱으로 가져와서 사용하는 다른 오브젝트들은 보통 Awake() 에서 캐싱을 해오는데. (아래 코드처럼) private void Awake() { anim = GetComponentInChildren(); rigid = GetComponent(); } 이 스크립트가 오브젝트에 붙어있는게 아닌, 아래 코드처럼 다른 script에서 instantiate 로 생성되는 script라면, manager = GameManager.Instance; // GameManager는 특정 object에 할당된 script가 아님 // 다른 script 내부에서 생성된 script임. 씬 이동시 Awake()가 불리지 않음. 그래서 awake()내부에서 캐싱된..
shift + space : 원하는 창위에 마우스 올려놓고 shift와 space를 누르면 그 창이 전체화면으로 바뀜. 한번더 누르면 원래 화면으로 되돌아옴 v: v를 눌러 물체의 중점을 원하는 위치로 바꾸고 물체의 위치를 드래그로 바꿔보면, 물체 간 완벽히 면과면, 혹은 모서리와 모서리가 닫게 함. shift + f : 위치를 관찰하고 싶은 움직이는 오브젝트를 클릭하고 shift + f 를 누르면 플레이시 씬 카메라에서 그 물체를 따라감. 인스펙터 창 우측 점3개누르고 debug클릭 : private변수도 인스펙터 창에서 볼 수 있음. [참고] 유니티 핵꿀팁 총정리 - YouTube
쉬워보인 플레이어 이동에 벽 충돌을 고려하니 방법은 많은데 해결은 안돼서 답답한 마음에 확실히 이 부분을 뿌리뽑으려고 쓰는 글 방법 소개 전에 잠깐! 이동 시 콜라이더 이슈 해결법 - 물체를 순간이동 시키는 이동방법은 콜라이더를 뚫어버릴 수 있다. 콜라이더를 뚫지 않는 이동(벽 안뚫고 이동)을 하고싶다면 다음 두 가지만 사용가능. rigidbody.velocity / rigidbody.addforce - 그게 싫다면 raycasting으로 플레이어 앞에 ray를 쏴서 ray에 벽이 닿으면 더 이상 이동하지 못하게 하자. - Increase mass of your platform to eliminate this problem. Mass is density of collision in Unity...?어디서..
어디서 getcomponent를 하느냐에 따라 달라지기때문에 두가지 예시로 알아보자 1. GameObject.getcomponent : 해당 object에 붙어있는 여러 component중 내가 찾는 component를 가져다 줌. 2. transform.getComponent : 해당 transform이 붙어있는 GameObject를 찾음. 그 후 GameObject 에 붙어있는 여러 component중 내가 찾는 component를 가져다 줌. (Gameobject가 필요없고 transform만 사용하면 되는 상황에서 굳이 gameobject를 달고다니는 수고를 덜 수 있음 ) --> 결과는 똑같지만 transform.getComponent는 한 단계를 더 거침. 참고한 사이트 https://..

아이템 상점에서 아이템 하나가 사라지면 그 빈칸이 비어있지 않고 남은 아이템들의 위치가 자동 정렬되는 방법을 찾다가 Vertical Layout(Horizontal Layout 도 있다) 을 발견함. 사용법 1. 빈 오브젝트를 만들고 Vertical Layout을 추가한다. 2. 그 오브젝트 아래(자식) 원하는 오브젝트들을 넣는다. 끝! 3. 첫번째 사진의 여러 속성들(Control child Size 등) 을 조절하면 된다. spacing : 자식 오브젝트 간 간격을 얼마나 줄 것인지 Control Child Size : Vertical Layout의 사이즈에 자식들의 사이즈를 맞출것인지. (Vertical Layout 의 크기에 맞춰 자식 오브젝트들을 늘이거나 줄여버림) Use Child Scale ..
Optional Chaining은 "물음표 점" 으로 표현함. 사용예시 public event Action OnInteraction; OnInteraction?.Invoke(); OnInteraction 이 null이면 -> null을 반환하고 함수는 실행하지 않음. OnInteraction 이 null이 아니면 -> OnInteraction.Invoke() 를 실행. 즉 ?. 앞의 값이 null이 아니면 "?."가 있는 자리를 "." 로 바꿔서 해석하면 됨. OnInteraction?.Invoke() // OnInteraction.Invoke(); 로 바뀌어 실행됨!