unity18 [Unity] 지진 시뮬레이션 - 7 (경로 이동에 따른 점수 측정) 인공지능이 학습을 진행하기 위해서는 더 많이 이동한 우수한 개체를 선택해야 하기 때문에 이동한 거리에 따라 점수를 부여해야 한다. 그렇기에 경로가 진행될수록 점수를 부여받도록 만들었다. 1. 타일에 숫자 매기기 마땅한 방법이 떠오르지 않아서 타일마다 숫자를 매겨보기로 하였다. 타일에 숫자를 매기기 전에 방해가 될 만한 것들을 전부 가려준다. 위치에 따른 번호를 매겨준다. 2. 타일 숫자 인식 콜라이더의 밑부분을 조금 튀어나오게 하여 바닥을 인식하도록 한다. 타일 태그를 추가하고, 바닥에 타일 태그를 적용한다. 그리고 바닥을 인식하는 코드를 추가한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public c.. 2024. 3. 27. [Unity] 지진 시뮬레이션 - 6 (장애물 데미지 구현) 1. 콜라이더 배치 접촉을 인식시키기 위해서는 콜라이더를 먼저 만들어주어야 한다. 오브젝트 편집 창에 들어가서 Add Component를 선택한다. Capsule Collider를 생성한다. 적절하게 배치해 준다. 나중에 한 번에 학습시킬 때 player끼리의 충돌을 방지하고 코드를 간단하게 만들기 위해 Is Trigger 항목을 선택하여 충돌 연산에서 제외시켰다. 2. 접촉 인식 태그를 추가해서 player가 장애물에 접촉하였을 때 접촉한 장애물이 무엇인지 알 수 있게 할 것이다. 먼저 태그를 추가한다. 오브젝트마다 태그를 달아준다. Project에서 우클릭에서 C# 스크립트를 생성하고 코드를 추가한다. void OnTriggerEnter(Collider other) { print(other.tag);.. 2024. 3. 26. [Unity] 지진 시뮬레이션 - 5 (추가 플레이어 이동, 디자인) 1. 디자인 친숙하고 단순한 형태의 디자인을 생각하였다. 원기둥과 원을 잘 배치하여 몸을 만들었다. 그리고 얼굴을 추가함으로써 디자인을 완성하였다. 2. 플레이어 이동 저번에 만든 코드는 사람이 조작하기는 편리하였으나 기계학습을 시키기에는 부적절하여 조금 더 입력값을 단순히 할 수 있는 방법을 사용하였다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class playerMove : MonoBehaviour { public float playerSpeed; int r = 0; void Update() { int Move = 0; if(Input.GetKey(KeyCode.A) || Input.Ge.. 2024. 3. 22. [Unity] 지진 시뮬레이션 - 4 (플레이어 움직임) 본격적으로 게임 시스템을 만들기 전에 플레이어를 만들 것이다. 먼저 간단한 오브젝트를 생성한다. 여기에 Rigidbody를 추가하고 조건을 설정한다. 플레이어는 회전하면 안 되기 때문에 회전을 비활성해야 한다. 오브젝트에 CharacterController를 추가한다. CharacterController : Unity에서 제공하는 컨트롤러로 오브젝트의 움직임을 더욱 자연스럽고 편리하게 만들 수 있다. 플레이어 이동 코드를 추가한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class playerMove : MonoBehaviour { public float playerSpeed; public .. 2024. 3. 21. [Unity] 지진 시뮬레이션 3 (조명과 장애물 추가) 시뮬레이션을 조금 더 아름답고 위험하게 만들기 위해 여러 오브젝트를 추가할 것이다. 1. 조명 Cube에 Point Light를 추가하여 만들었다. 2. 책장 먼저 기틀을 잡았다. 그리고 책장에 들어갈 책들을 다양하게 만들어 두었다. 만들어둔 책들을 적절히 배치하고 색도 조금 조정하면 완전한 책장이 만들어진다. 3. 작은 박스 큰 박스의 크기를 적절히 조정하여 만든 작은 박스를 적절히 배치했다. 만든 오브젝트들에 전부 물리를 적용하고, 책장은 완전히 무너지지 않게 움직임 규칙을 조금 설정하면 완성이다. 책이 책장을 통과한다. 2024. 3. 20. [Unity] 지진 시뮬레이션 - 2 (지진 구현) 배경을 제작하였으므로 지진 시뮬레이션에서 가장 중요한 지진을 구현할 것이다. 앞서 카메라 흔들림 효과 코드를 이용하여 지진을 구현해 보았으나 위치값만 수정하면 마찰이 적용되지 않는 것 같았다. 그래서 위치값이 아닌 물리값을 수정하게 만들어보았다. 1. 바닥에 물리 적용 바닥 오브젝트에 Rigidbody를 적용하였다. 그러자 "Non-convex MeshCollider with non-kinematic Rigidbody is no longer supported since Unity 5."라는 오류가 발생하였다. 그래서 바닥을 박스 오브젝트로 다시 생성하였더니 오류가 해결되었다. 그리고 원하는 움직임을 위해서 바닥의 위치와 회전을 고정시켰다. 2. 움직임을 물리로 구현 일반적인 position같은 위치값을 .. 2024. 3. 19. [Unity] "the module which implements this component type has been force excluded in player settings" 오류 해결 평소처럼 작업을 하기 위해 유니티를 열고 실행을 시키자 안전 모드로 열리면서 rigidbody가 있는 줄에 오류가 발생하였다. 가벼운 문제인 줄 알고 그 줄을 주석으로 처리하였으나 다시 들어가서 실행을 시키니 모든 오브젝트의 colloider와 rigidbody에서 경고가 뜨며 물리 작용이 사라졌다. 원인을 찾아보니 Packages 폴더 내부가 완전히 비어있었다. 다른 프로젝트 파일에 들어가도 마찬가지였기 때문에 Unity 내부 문제라고 생각하였다. 마침 라이선스를 신청할 때 뜨던 오류가 생각났다. 이에 Unity 서버 문제라고 생각하여 라이선스 서버 연결을 우선으로 생각하고 인터넷에서 찾아보았다. 인터넷에 찾아본 결과 C: > ProgramData > Unity에 들어가서 Unity_lic.ulf 파일.. 2024. 3. 18. [Unity] 지진 대피 시뮬레이션 -1 (3D 타일맵을 이용하여 건물 제작) 학교에서 지진 안전교육을 실시하였기 때문에 연계활동으로 지진이 발생하였을 때 안전하게 건물에서 탈출하도록 학습하는 알고리즘을 만들기로 하였다. 1. TileMap 생성 https://www.youtube.com/watch?v=ulFc6p3hQzQ 3D 타일맵은 일반적인 방법으로는 만들 수 없기 때문에 위 영상을 참고하여 만들었다. (1). Enable Preview Packages 활성화 Edit > Project Settings > Package Manager에 들어간다. Enable Preview Packages를 활성화한다. 이를 활성화하면 3D 환경에서 타일맵을 사용할 수 있게 된다. (2). TileMap 설치 window > Package Manager에 들어간다. Packages: In Pr.. 2024. 3. 17. 이전 1 2 3 다음