프로그래밍 59

VR 농구 만들기

Unity에서 VR 프로그래밍 연습용 게임을 만들어 보았다.버전은 2021.3.21f1에 MRTKDevTemplate을 참고하고 만들었다.  시스템이 간단해서 코드는 따로 첨부하지 않을것이고 시스템구조도 정도만 올린다. 사실 여기서 조금 힘들 었던게 두 가지가 있는데, 첫 번째는 조작감. 유니티 에디터 상에서 hand controller로 잡고 힘을 주는거랑 실제 hololens2로 테스트를 해본거랑 매우 다르다. 줄 수 있는 힘이 마우스랑 달라서 그런 것 같다. 이를 조금 참고해서 mass나 탱탱한 느낌을 줄 수 있게 마찰, 탄성계수 등을 조정했다.두 번째는 농구대의 링. 링은 unity probuilder plugin에서 기본으로 있는 torus를 사용한 것이다. 하지만, collider mesh가 ..

Hololens를 이용한 VR튜토리얼

https://learn.microsoft.com/ko-kr/training/paths/beginner-hololens-2-tutorials/ HoloLens 2 기본 사항: 혼합 현실 애플리케이션 개발 - TrainingMixed Reality Toolkit을 사용하여 Azure 지원 혼합 현실 애플리케이션을 개발하기 위한 모범 사례를 알아봅니다.learn.microsoft.com튜토리얼 같은 경우에 여기에 잘 나와있으니 해당 내용을 쭉 따라갈 것이다. 첫번째로 다른 것 보다 세팅이 상당히 복잡하고 두번째로는 Hololens 실물을 구하기가 어려울 것이다. 현재 검색 기준으로 600만원으로 보인다. 튜토리얼1 기준으로 cube 두개를 가깝게 멀게 배치하고 이를 grab, touch 해보는 실습을 가진다..

SceneManager를 잘 만들려면 어떻게 해야할까?

SceneManager란?어디선가 듣기로는 SceneManager, GameManager, SoundManager등 이런식으로 처리 하는 것이 좋은게 아니라고 들었는데 이유를 듣지는 못해서 나는 이대로 쓰고 있다.내가 생각하는 SceneManager란, 스테이지 1-1, 1-2, 1-3 등의 씬이 이동될때 이를 세팅해주는 매니저라고 생각한다. 현재 사용중인 Godot의 경우에는 유니티와 다르게 씬 기반은 아니지만 위와 같은 역할을 해줄 주체는 필요하다고 생각되어 만들어 보게 되었다. 쉬운 SceneManager 만들기가장 쉽게 생각나는 SceneManager만드는 방법은 아래와 같다.SceneSetting("Start_Scene");void SceneSetting(String sceneName){ if(..

FMOD in godot 사용법

FMOD는 사운드 엔진으로 여러 리듬게임에서 사용하고 있다. 특히나 FMOD for Unity 라는게 따로 있어 Unity는 직접적으로 연계해서 사용할 수 있다. 우리가 잘 아는 리듬게임인 DJMAX는 Unity 게임엔진과 FMOD 사운드엔진을 채용하고 있어 기능적인 완성도는 충분하다 라고 생각한다. 그 FMOD를 Godot에서 사용하기 위해서 거쳐야 할 과정을 정리해본다. FMOD란?우선 나도 사운드 엔진이 어떤걸 해주는지 잘 모른다. chatgpt 및 FMOD 사이트를 읽어본 결과 오디오 믹싱, 사운드 프로그래밍에 있어서 여러 api들을 지원해주는 것 같다. 리듬게임의 경우에는 음악이 몇 ms만큼 진행 됬는지에 따라 판정을 분류하는데, 이런 부분에 있어서 도움되는 기능들이 있는 것이다. 자세한 것은 ..

Godot Engine 사용기 3

1. AnimationGodot에서는 AnimatedSprite2D를 이용해서 애니메이션을 구현한다. 해당 오브젝트에 애니메이션 image를 다 넣으면 그대로 재생한다. 복잡한 애니메이션의 경우에는 AnimationPlayer 라는 노드가 존재한다.  2. UILabel 사용시에는 CanvasLayer아래에서 사용. MarginContainer를 사용하여 CSS처럼 동시에 관리 가능.다른 Container들도 존재하니 사용하기 전에 참고 3. Collision Layer vs Mask충돌 부분 처리하다가 뭔가 문제가 있어서 확인해보니 실습을 따라가지 않은 부분이었다. 헷갈릴 수 있어서 따로 찾아 보았다.layer : determine what can detect memask : determine what..

Godot Engine 사용기 2

1. 물리엔진Area2D : 충돌 판정 확인StaticBody2D : 충돌, 이동불가CharacterBody2D : 충돌, 이동가능 (code)RigidBody2D : 충돌, 이동가능 (physics)collision shape가 있어야 사용가능 유니티에서의 rigidbody/collision 와 비슷한 개념인 것 같다.move_and_slide() : velocity 기반으로 이동 구현함 2. Instatiateextends Node2Dvar coin_scene: PackedScene = load("res://tscn/coin.tscn")func _on_timer_timeout() -> void: var coin = coin_scene.instantiate() $Coins.add_child(coin) ..

Godot Engine 사용기 1

https://godotengine.org/ Godot Engine - Free and open source 2D and 3D game engineGodot provides a huge set of common tools, so you can just focus on making your game without reinventing the wheel.godotengine.org 유니티가 올해에 요금제 개편을 요구하는 등의 불안정성 때문에, 다른 엔진이 어떤게 있나 알아보다 GODOT 이라는 엔진을 알게 되고 사용해보려한다. 우선 가장 큰 차이로 느껴지는건 Unity의 실행속도에 비해 매우 빠르고 가볍다. 기능도 그러할지는 사용해봐야 알것이다. 고돗은 특이하게도 GDScript라는 본인들만의 스크립트를 사..

소프티어부트캠프 3기 최종프로젝트 후기

프로젝트 배경 최종 프로젝트에 앞서 뽑기를 통해 4인팀에 선정되었다. 2 web FE, 2 web BE팀으로 평균적으로 5인팀이었던 것에 비해 사람이 한 사람 적은 단점이 있지만 뭐 하면 되겠지? 라는 마인드였다. 프로젝트 초기 기획이 제일 어려웠던 것같다. 기획 아이디어만 있다면 무엇을 만들지 어떤 포인트를 가지고 갈지가 결정되는데 팀원중에 좋은 아이디어를 가져와서 빠르게 개발및 환경 설정에 들어갈 수 있었던 것 같다. 최종 주제로는 화물운송용달 서비스 가 선정 되었고 첫주에는 기술스택이나 ERD, API문서 등의 설계에 들어갔다. 우리는 고객앱 그리고 예약을 잡는 기사앱 두개를 전부 하려고 했고 그만큼 인력에 비해 시간이 부족했던것 같다. 다 끝나고 와서 드는 생각인데 구현도 물론 중요하지만 설계를 ..

spring에서 api 요청하기

현재 개발하는 프로젝트에서 지도 api를 사용하게 될일이 생겼다. 정확히는 출발지와 목적지가 주어졌을때, 얼마나 걸리는지를 계산해서 거리와 시간을 가지고 비용 측정 및 차량을 추천해줘야 하는 상황이다. 우선, 이런저런 리서치를 해봤는데 spring에서 api를 요청할 일이 거의 없었나 자료들이 많지는 않았다. front에서 요청하듯이 하면 되겠지? 라는 생각 정도 였다. https://github.com/googlemaps/google-maps-services-java GitHub - googlemaps/google-maps-services-java: Java client library for Google Maps API Web Services Java client library for Google Ma..

자바의 이모저모 : static, final, 그리고 캐스팅

public class PostRepository { private static final Logger logger = LoggerFactory.getLogger(PostRepository.class); } 자바를 다루다 보면 위와 같은 변수선언들을 정말 자주 볼수 있다. 심지어 static final을 사용하지않으면 intellij에서 사용하라고 권장하기도 한다. 지금까지는 순순히 하라는대로 했지만 이제는 왜 그렇게 해야되는지를 알아보려고한다. public class PostRepository { private Logger logger = LoggerFactory.getLogger(PostRepository.class); } 아래와 같은 코드도 역시 가능하다. 그리고 C, C++을 사용할때는 이러한 경..