개요플레이어 공격 모션을 구현하는데, 이동하면서 공격이 가능해야했다. 기존에는 Attack도 State로 구현했으나, 구현하다보니 결국 Action으로 분리하기로 했다. 내용먼저 현 코드상으로 공격 상태일 때 이동할 수 있도록 처리했다. 하지만 그렇게 하니 다리 애니메이션이 움직이지 않아, Animator에서 레이어를 오버라이드하여 공격모션은 상체만 적용하도록 구현했다.하지만 그 상태로도 State 구조 상 공격 중에는 상태가 공격 상태로 고정되어 다리 애니메이션이 부자연스러웠다. AI와 해당 내용을 공유하며 상의해본 결과, 현 구조가 맞지 않는다고 판단했다. 나로서도 서 있을 때도, 움직일 때도 공격이 가능해야하기 때문에 공격은 행동으로 빼는 게 더 맞다고 판단하여 해당 구조로 변경했다.IPlayerA..
개요어제 못한 State 분리를 이어서 작업했다. 그리고 이동(조작) 작업은 Push한 후, 다음주 시작 예정이었던 공격 작업에 들어갔다.내용일단 사용할 State들만 먼저 아래처럼 생성하여 구현했다. Idle과 Move에서는 문제 없었는데 이제 콤보 공격을 구현해야하는 Attack에서 현재 살짝 막혔다. StateMachine으로 comboAttack 값을 1씩 올리는 느낌으로 구현하려고 했는데, 콤보 타이밍이 의도대로 동작하지 않는 느낌이 든다. 디버깅을 좀 더 해봐야겠지만 아무래도 애니메이션 transition 타이밍 등 다양한 요소가 고려되기 때문인 것 같다. 더 깔끔한 구현을 위해 애니메이션 이벤트 추가하는 방향도 고려해봐야 할 것 같다. 느낀 점역시 무언가 만들 때 가장 많이 배우는 것 같다..
개요에셋으로 용사 컨셉 캐릭터를 다운 받았는데, 내겐 방패가 필요 없었다. 작업 내용받은 캐릭터의 방패를 지우고 나니 허공에 남은 손이 덩그라니 투명 방패를 잡고 있어, 해당 부분을 수정했다. 우선 캐릭터에게 이미 모션이 다 존재하는 상태였는데, 어차피 몇몇 모션만 필요하고, 또 수정해야하기 때문에 Animator부터 새로 만들었다.Animation은 기존에 받은 건 모두 read only라서 복제하여 수정했다.다만 이때 아무리 기존에 배운 Record를 키고 수정하려해도 수정이 안됐다(움직이고 나서 다른 관절 누르면 다시 원상복구됨)동시에 아래와 같은 경고가 떴다.Keyframing rotation on humanoid rig is not supported!흠 humanoid는 뭔가 다른가 보군. 하고..
개요이번에 동일 팀으로 2차 팀플을 하게 되었다.저번 팀플 때 TIL을 성실히 적지 않은 게 아쉬워져서 오늘 개발 들어가는 김에 적어보고자 한다. 나는 플레이어에 자원했다. UI는 저번에 충분히 해봤고, 작업 하면서 많이 배울 수 있는 파트를 하고 싶었다. 그리고 귀엽기도 하다오늘 점심까지 기획하고 오후에 개발에 들어갔다. 작업 내용오늘 개발은 플레이어 이동까지 했다.모바일 게임이라 virtual joystick을 사용해야 했는데, 기간이 짧은만큼 무료 에셋을 사용해 빠르게 구현하기로 했다. UI가 일이 많기도 했다.CharacterController와 무료 에셋을 사용해 구현했다.해당 에셋을 사용한 이유는 1. 리뷰가 압도적으로 많았으며 2. 최근 리뷰가 4일 전이었고 3. 국내 유명 유투버가 만든 튜..
오전에 Vector 외적...했음 궤적 그리기using System.Collections;using System.Collections.Generic;using UnityEngine;public class Cannon : MonoBehaviour{ // 캐논의 발사력과 질량을 설정 public float Power = 500.0f; // 발사력 public float Mass = 10.0f; // 캐논볼의 질량 public int maxStep = 20; // 예측할 궤적의 최대 단계 수 public float timeStep = 0.1f; // 시간 간격 (매 단계마다의 시간 차) // 발사체와 궤적을 표시할 오브젝트 public GameObject ..
스킬 사용 + 스킬 사용 시 효과using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.InputSystem;// 데미지 필드의 데이터를 정의하는 구조체 (Serializable로 설정해 인스펙터에서 수정 가능).[Serializable]public struct DamageFieldData{ public float distance; // 캐릭터로부터 데미지 필드가 생성될 거리.}// 캐릭터를 제어하는 메인 클래스public class CharController : MonoBehaviour{ // 상수 및 애니메이터 파라미터 해시 private const ..