일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 레이캐스트
- 게임개발
- callbyvalue
- 게임제작
- 리듬게임
- 게임
- raycast
- 리듬게임에디터
- callbyreference
- 짐벌락
- 깃허브
- 로케트
- 소규모프로젝트
- github
- 델리게이트
- 유니티
- Quaternion
- 1인개발
- 인터페이스
- Euler
- 병맛게임
- C#
- ARProgect
- Unity
- ExtensionMethod
- AR세팅
- AR게임
- AR Foundation
- 확장메서드
- ar
- Today
- Total
목록개발/WHITE POLYGON (15)
Ssssong += Dev
7/26일자 기록이다. Octahedron 스테이지의 기본 이동 방식을 세팅하였다. TrainMove 스크립트를 통해 목표 지점에 도달 시 회전이 가능한 지 여부를 확인하고 끝까지 갔을 때 Collider로 검사하여 다음 기차로 교체하여 진행한다. public override void Start() { base.Start(); initCanNextTrain = canNextTrain; ResetInitState(); } public override void Update() { if(nowMove) { gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, nowDestination.position, moveSpe..
블로그 기록이 늦었지만... 7월 20일자 기록이다. 타이틀 -> 큐브 씬 까지의 연출을 이어두었다. 대사가 출력되고 퀘스트가 다음 단계로 넘어가는 조건을 각각 QStartEvent(시작 시 실행) / QClickEvent(클릭 시 실행) / QItemApplyEvent(아이템 사용 시 실행) 으로 나누어 적용한다. BlackInOut 스크립트를 통해 씬 로드 시 연출을 제작하였다. public class BlackInOut : CSingleton { public GameObject blackBackPrefab; public bool readyToChangeStage; public string changeTargetScene; public TextMeshProUGUI sceneChangeNameText;..
회전 퀘스트에 대해 옵저버 패턴을 적용하였다. public interface RotateEndObservable { public void SubscribeEvent(RotateObserver observer); public void UnSubscribeEvent(RotateObserver observer); public void Notify(); } public interface RotateObserver { public void UpdateObserver(Cube cube); } 이렇게 두 인터페이스를 만들어 두고 회전이 끝날 때에 구독 옵저버의 퀘스트 클리어 함수가 실행되도록 하였다. public class Cube : RotatableObj, RotateEndObservable { [Header("..
아이템 트레이드 시스템을 제작하는 도중 드래그 앤 드랍이 안먹혀서 시간을 꽤 날려먹었다... 드랍을 할 때 드랍할 영역에서 IDropHandler를 인식 못하는 문제였는데, 드래그 중인 오브젝트에 Ignore Raycast도 먹여보고... IDropHandler로 안되니까 OnTrigger도 써보고... 난리였는데 생각보다 해결 방법은 쉬웠다. 캔버스 그룹에 blocksRaycast를 false로 두면 되었던 것... 이 두 줄로 모든 것이 해결될 줄이야! gameObject.AddComponent(); gameObject.GetComponent().blocksRaycasts = false; 비슷한 문제로 UI 요소를 Raycast에서 제외하고 싶다면 Raycast Target을 체크 해제하면 된다. 주..
씬 이동, 인벤토리, 공간 회전 동작, 대화시스템 기본 세팅하였다. 대화시스템은 아직 텍스트 출력만 넣어두고 여러 텍스트 순서대로 출력하는 건 적용되지 않았다. 인벤토리와 대화시스템 관리는 싱글턴으로 관리하고 있다. 싱글턴 생성이 프레임워크로 들어가 있는데, 이 코드를 유용하게 쓰고 있다. using System.Collections; using System.Collections.Generic; using UnityEngine; using System; public abstract class CSingleton : CComponent where T : CComponent { public static T m_oInstance = null; //! 인스턴스 프로퍼티 public static T Instanc..
기본 UI 구조 및 동작 세팅하였다. 흑백 그래픽으로 제작할 것이기 때문에 외곽선이 중요하여서 한참 방법을 찾다가 유니티 무료 에셋 중에 Normal, Depth 카메라를 통해 외곽선을 구현한 에셋을 찾아서 적용하였다. 단, 카메라에 보이는 오브젝트 기준으로 외곽선을 찾는 방식이기 때문에... 오브젝트 위치에 따라 보여서는 안되는 부분의 선이 보이고 보여야 하는 선이 보이지 않는 경우가 생겼다. 따라서, 1. 큐브가 정사각 안에서만 보여야 한다 2. 정사각 또한 큐브 오브젝트이기 때문에 외곽선을 유지하며 회전 효과가 자연스럽게 나와야 한다 이 두 가지 조건을 동시에 만족하려면 몇 가지 꼼수를 섞어서 구현해야 했다. 일단 배경은 지난 ThrowBall! 프로젝트 때 테스트 했던 Stencil Buffer를..
기획서 컨펌 받고 나서 게임 구조 만들어 보는 중이다. 프로젝트 진행 중 짐벌락 현상을 겪어서 따로 정리한다. private Quaternion SetTargetRotation(Vector3 a_vRotationDir) { Vector3 targetRotationInVec3 = a_vRotationDir + gameObject.transform.eulerAngles; Quaternion targetRotation = Quaternion.Euler(targetRotationInVec3); return targetRotation; } 문제가 되는 부분은 targetRotation을 오일러각으로 계산했기 때문에 생긴 것이었다. 오일러각으로 계산하면 회전 중 축이 겹치게 되어 원하는 회전을 만들 수 없다. 쿼터..