Unity (48) 썸네일형 리스트형 캐주얼 슈팅 액션 대전 게임 (모바일) - 3 포톤 환경 캐릭터 이동이 되니까 슬슬 포톤 환경을 구축하는게 좋을 것 같다. 처음부터 포톤 붙이고 하는게 더 좋은 것 같지만 괜찮은 에셋을 발견해서 빨리 움직여보고 싶다는 생각에 그만... 에셋스토어에서 Photon Pun 2 에셋을 다운받아 프로젝트에 임포트 해준 상황이다. LogIn UI를 만들었다. username을 입력하고 Enter를 누르면 방이 없을 경우 방을 만들고 참가 방이 있을 경우 그 방에 참가 할 수 있게 만들었다. 만약 Username을 입력하지 않고 Enter를 누른다면 닉네임을 입력하고 다시 시도하라는 UI를 띄웠다. X를 누르면 이 UI는 SetActive(false)가 된다. using UnityEngine; using UnityEngine.SceneManagement; using Ph.. 캐주얼 슈팅 액션 대전 게임 (모바일) - 2 공격로직 및 공격 애니메이션 이번엔 공격 로직을 정리하겠다. public interface IPlayerInput { public Vector3 GetAttackDirection(); } public class PlayerInput : MonoBehaviour, IPlayerInput { private AttackJoystick attackJoystick; void Start() { attackJoystick = GetComponentInChildren(); } public Vector3 GetAttackDirection() => new Vector3(attackJoystick.Horizontal, 0, attackJoystick.Vertical); } 1. PlayerInput에 미리 만들어두었던 AttackJoysitck을 가지.. 캐주얼 슈팅 액션 대전 게임 (모바일) - 1 이동로직 및 이동 애니메이션 1. 캐릭터 에셋과 Joystick Pack 에셋을 임포트 해준다. 2. 왼쪽의 조이스틱은 프리팹에 있던 Variable Joystick을 그대로 사용했고, 이것은 움직임을 담당할 것이다. 3. 오른쪽의 조이스틱은 Joystick을 상속받는 AttackJoystick을 만들었다. 오른쪽 조이스틱의 방향대로 총알을 날릴 예정이다. 에셋에 애니메이션도 다 들어 있고 체력바랑 캐릭터 이름 UI도 있다. 와우... 4. 간단하게 체력바랑 캐릭터 이름 UI를 이걸 빌보드 시켜주자 UI 빌보드 public class BillBoard : MonoBehaviour { private Transform target; void Start() { target = Camera.main.transform; } void Upda.. 캐주얼 슈팅 액션 대전 게임 (모바일) - 0 기획 게임잡에서 채용공고들을 보니 3D 액션 슈팅, 3D FPS 등의 팀을 모집한다는 채용공고가 여럿 보이길래 포트폴리오는 3D 액션 슈팅 대전 게임을 만들기로 정했다!!! 기본적인 틀은 이렇다. 모바일 환경 포톤을 활용한 1 vs 1 대전 게임 5판 3선승제 캐주얼한 그래픽의 캐릭터와 맵 탑다운 뷰 「액션」 모바일 환경 요즘 모바일 하드웨어가 충분히 좋아지긴 했지만 그래도 모바일 디바이스라는 태생적 한계가 있을 것이라고 생각한다. 그래서 최적화를 해야될 것 같은데 이번 프로젝트에서는 ①맵을 메쉬 베이크로 굽고 ②오브젝트 풀 ③스크립터블 오브젝트 정도를 구현해서 메모리를 줄이도록 해보자 모바일 환경이라면 ④모바일 조이스틱이 필요할 것 같다 전에 유튜브로 봐뒀던 Joystick pack 무료 에셋을 이용해보자 .. Vector의 기본 Vector 더하기: 사용 이유: - A와 B를 합친 최종 방향을 나타내기 위함 - 가해지는 모든 힘의 합을 알기 위함 예시: - 플레이어를 제어하기 위해 오른쪽 방향키와 상단 방향키를 동시에 누를 때 오른쪽 대각선 위로 이동하는 것 특징: - 덧셈은 뺄셈과 달리 순서를 바꿔도 같은 결과가 나온다. Vector 빼기: 사용 이유: - A의 위치에서 B쪽으로 이동하고 싶을 때의 방향을 알기 위해서 예시: -몬스터 AI가 플레이어를 발견하고 공격하러 오는 경우, 플레이어쪽으로 향하는 방향을 구할 때도 빼기를 사용한다(추적). 특징: - 뺄셈은 덧셈과 달리 순서를 바꾸면 다른 결과값이 나온다. 벡터의 길이 (크기) 2차원 벡터일 경우: 3차원 벡터일 경우: 벡터의 길이는 스칼라(Scalar) 형식으로 표현된다.. ML-Agents_4 (Ray 관측) Stage를 이렇게 만든다. 구조는 이런 식으로 한다. Agent에 Mummy Ray Ctrl 스크립트를 만든다. using System.Collections; using System.Collections.Generic; using UnityEngine; using Unity.MLAgents; using Unity.MLAgents.Sensors; using Unity.MLAgents.Actuators; public class MummyRayCtrl : Agent { StageManager stageManager; Transform tr; Rigidbody rb; public override void Initialize() { MaxStep = 5000; stageManager = transform.roo.. ML-Agents_3 (수치 관측) 인스펙터에 값 입력 Al agent 스크립트를 작성했던 Mummy Ctrl을 추가하면 Behaior Parameters 컴포넌트가 자동으로 추가된다. Max Step은 얼마만큼 반복할 것인가에 대한 값이다. 0으로 하면 무한히 반복하고 1000으로 하면 1000번동안 반복한다. Space Size는 수집하는 데이터의 개수를 나타낸다. 전 포스팅에서 CollectObservations를 보면 Vector의 값이 총 8개 있다. Target의 Transform.position 값(3) Vector3(x, y, z), Agent의 Transform.position 값(3) Vector3(x, y, z), rb의 x velocity(1) rb.velocity.x, rb의 z velocity(1) rb.velocity.z 총 8개이.. ML-Agents_2 (수치 관측) ml agent 메소드 정리 및 수치 관측 이러한 형태로 스테이지를 만든다. Floor와 Target 그리고 DeadZone 안에 있는 Wall(스테이지 가장자리에 위치한 4개의 벽)에는 박스 콜라이더와 머테리얼 컴포넌트가 있고, Agent에는 리지드바디와 캡슐 콜라이더 컴포넌트가 있다. ml agents를 사용하기 위해서는 Agent를 상속받고 Unity.MLAgents 네임스페이스를 추가해 줘야 한다. using System.Collections; using System.Collections.Generic; using UnityEngine; using Unity.MLAgents; public class MummyCtrl : Agent { } ml agents 에는 5개의 기능이 필요하다. Initialize: Start 함수 처럼, 한 번만 .. 이전 1 2 3 4 5 6 다음