퍼니싱 그레이레이븐의 로비처럼 핸드폰의 자이로센서를 이용해 배경과 캐릭터를 조금씩 움직여 입체감을 느끼개 해주는 방법이다. 퍼니싱 그레이레이븐의 로비 자이로영상을 첨부하고싶었지만 찾을수 없었다. 참고한 영상 영상을 토대로 작성한 스크립트 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; public class LobbyGyroscopeEffect : MonoBehaviour { [SerializeField] private float shiftModifier = 1f; private Gyroscope gyro; private void Start() { #if UNITY_ANDROID..
Wander : 떠돌다 RPG게임에서 야생동물이나, 오픈월드게임에서 시민NPC들이 정처없이 떠도는걸 말한다. 활용한 에셋: A* Pathfinding Project Pro | AI | Unity Asset Store Get the A* Pathfinding Project Pro package from Aron Granberg and speed up your game development process. Find this & other AI options on the Unity Asset Store. assetstore.unity.com 에셋스토어에는 100불짜리 에셋밖에없지만 제작자 홈페이지에 들어가면 여기서 무료버전도 배포하고있다. 몇가지 기능이 제한돼있다는데 그럼에도 충분히 원하는기능을 구현하기에는 ..
유한 상태 기계 (Finite State Machine) 정의 컴퓨터 프로그램을 설계할 때 쓰이는 모델이다. 컴퓨터 내에 유한한 상태를 가지는 기계가 있다고 가정하고, 컴퓨터는 오로지 하나의 상태만 갖고 있을 수 있으며 각 상태별 동작과 상태끼리의 전이에 대한 내용을 설계하게 된다. 유니티의 Animator처럼 한State에 머무르며 행동을하고 다른State로 전이(Transition)을 하며 행동을 변경하는 시스템이라고 생각하면 편하다. 이미지 출처 : https://boycoding.tistory.com/262 AI를 코딩으로 만들때 이 패턴이 유용한데, 기존에 애용하던 패턴은 Switch문을 활용한 이런식이다. 방법 1 // FSM을 활용한 몬스터 컨트롤러 public abstract class M..
Vector3(1, 0, 0)을 y출으로 45도 회전한다면 vector3 v = Vector3.right; v *= Quaternion.AngleAxis(-45, Vector3.up); //또는 v *= Quaternion.Euler(0, -45, 0); 처음 생각으로는 Vector3에 회전시키는 확장메소드가 있을줄알았는데 Quaternion이였다.
선택적 매개변수로 Color를 사용하려할때 private void MyColor(Color _color = Color.magenta) { } 이런식으로 기본값을 넣을려하면 컴파일타입 상수가 아니라면서 오류를 낸다. public GraphicsLine(Point startPoint, Point endPoint, Color? color = null, double width = 1.0) { StartPoint = startPoint; EndPoint = endPoint; Color = color ?? Colors.Black; Width = width; } 해결법은 이런식으로 작성하면 된다. 출처 : https://minecode.tistory.com/65 여기서 나오는 ?연산자와 ??연산자에대한 설명은 C# ..
요런기능을 말함 필요한 변수와 함수 public float cameraSphereRadius = 0.2f; public float cameraCollisionOffset = 0.2f; public float maximunCollisionOffest = 2.2f; private void HandleCameraCollision(float maxDistance, Vector3 startPos) { targetPos = 0f; RaycastHit hit; Vector3 dir = (transform.position - startPos).normalized; Debug.DrawLine(startPos, startPos + dir * maxDistance, Color.red, 0.5f); if(Physics.Sph..