유니티 에셋스토어에서 다운받은 우주과학 주변환경을 사용했다가 생각보다 오버워치와 매칭이 안되어다시 만들었다. 다음 주까지는 맵을 전부 다 만들예정이다.생각보다 오래걸린다...
Unity/Unity FPS게임 프로젝트(오버워치라이크)
현재 솔져의 하반신을 아바타마스크를 사용하여 걷기, 앉기, 점프 등에 대한 애니메이션이상체와 별개로 실행되는 작업을 했다.그러나 앉을 때 캐릭터는 앉는 모션을 취하지만 하반신만 작동되어 캐릭터가 공중에 떠있는 상태가 된다.그래서 기존에 작업했던 코드를 일부 수정하였다.원래 좌측 컨트롤키를 누르면 유닛카메라의 로컬포지션 y값이 앉기모드의 y값으로 바뀌게 만들었다.이젠 그럴 필요없이 해당 캐릭터의 포지션 y값을 앉기모드 y값으로 바꿔주었다.카메라는 고정되어있고, 캐릭터의 포지션 y값만 변경되어앉기 애니메이션이 실행될 때 더이상 캐릭터는 공중에 떠있지 않으며,카메라와 캐릭터의 포지션y값이 따로 설정되지 않게 되었다.[UnitController.cs] [Header("Unit Y Pos")] // 앉..
기존에 만들지 못했던 오버워치 솔져의 생체장 스킬 기능을 구현했습니다.기존 코드에서는 UnitController클래스를 가져와서 UnitController의 currHp를 증가시켜주도록 만들었습니다.하지만 솔져는 프리팹이었고, 해당 프리팹에 있는 UnitController를 연결시켜주는 방식을 사용한 것입니다.그래서 생체장 스킬을 사용해도 인식을 할 수 없었던 것입니다. [ESkill.cs]public class ESkill : MonoBehaviour{ public float numHeal = 20f; private void OnTriggerStay(Collider other) { if (other.gameObject.tag == "Unit") ..
오버워치는 1인칭 게임이다.하지만 상대방에게는 3인칭의 캐릭터가 보이기 때문에 일단 무기와 손만이 아닌캐릭터 몸 전체를 사용하였다.카메라의 포지션을 바꿔서 1인칭처럼 보이게했지만실행을 누르고 애니메이션이 작동되면 갑자기 캐릭터의 포지션이 이상해진다. 아바타 마스크를 사용하여 상하체를 분리하는 방법을 시도했지만쉽게 해결되지 않아 스트레스이다...이미 완성됐어야 할 기능이 이것때문에 지체되고 있다. [Base Layer] [LowerBody Layer] FPS게임은 기본적으로 정면을 조준하고 있는 모습이 보여야하며,걸을 때도 다리만 움직이면서 상체는 조준하는 모습,점프, 앉기에서도 하체는 뛰고 앉지만 상체는 계속 흔들림없이 조준하는 모습을 원한다. 그리고 현재 캐릭터인 솔져의 아바타는 휴머노이드 상태여서..
솔져가 E스킬을 사용하면 해당 범위에 있는 아군 캐릭터의 Hp가 서서히 증가해야 합니다.현재 Hp가 미동이 없습니다... [ESkill.cs]public class ESkill : MonoBehaviour{ public UnitController unitController; float time; private void OnTriggerStay(Collider other) { if (other.gameObject.tag == "Unit") { if (unitController.currHp > unitController.maxHp) return; Debug.Log("heal"); ..
캐릭터(솔져) 스킬 만들기솔져의 스킬 기능을 구현해봤습니다. 좌shift - 달리기(이속up)E스킬 - 생체장(자힐)마우스 우클릭 - 나선로켓 1) 달리기는 캐릭터의 이동속도를 높여주고, 달리기 애니메이션을 플레이해줍니다.2) 생체장스킬은 생체장과 비슷한 오브젝트를 만들어서 캐릭터 포지션에 설치한 후 캐릭터의 부족한 체력을 채워줍니다.3) 나선로켓은 일정속도와 일정회전력을 가지면서 나아가고, 오브젝트와 닿았을 때 사라지며 이펙트를 플레이합니다. 직격뎀과 거리별 스플래쉬데미지를 아직 구현하지 않아서 나선로켓은 미완성입니다. [SkillManager.cs]public class SkillManager : MonoBehaviour{ UnitController unitController; ..
1. 적 봇 생성 오버워치 훈련장처럼 적 봇 유닛을 생성해주었습니다.일정 Hp를 가지고 있고, Hp가 0이 되면 사라지는 기능을 구현했습니다.그리고 일정시간 뒤에 해당 리스폰 포지션에서 다시 살아나는 기능도 구현했습니다. 일단, 적 봇 유닛을 만들어줍니다. [Enemy.cs]public class Enemy : MonoBehaviour{ Rigidbody rigidEnemy; [SerializeField] // 해당 적 봇의 원래 포지션. public Vector3 originPos; // 체력. public float maxHp; public float currHp; public float moveSpeed; public bool isMoveRight; ..
1. 점프스페이스바를 누르면 캐릭터가 점프를 하도록 만들었습니다.기존에는 바닥 오브젝트에 "Ground" 혹은 "Floor"이라는 태그를 달아주고,OnCollisionStay함수를 호출하여 캐릭터가 해당 태그를 가지고 있는 태그에 닿고 있다면점프를 가능하게 하고, 아니라면 점프를 하지못하게 설정했습니다.이렇게하면 점프 시 캐릭터가 공중으로 띄워져 바닥에 닿지않아 공중에서 중복점프가 안되게 만들 수 있습니다.현재있는 바닥이라곤 평평한 바닥 하나만 존재하기에 이렇게 만들어도 충분합니다.하지만 오버워치처럼 바닥과 벽이 수많이 존재하는 커다랗고 복잡한 맵에서 점프를 했는데약간 높이가 있는 바닥과 캐릭터의 얼굴이나 몸통이 닿아버리면 중복점프가 가능할 수도 있다는 생각을 했습니다.그래서 찾은 해결방법이 Raycas..
1. 캐릭터 이동1)솔져 캐릭터를 만들것이기 때문에 하이라키창에 솔져라는 이름의 빈 오브젝트를 생성하고받아온 Y bot 아바타를 자식 오브젝트로 넣어줍니다. 2)부모 오브젝트인 솔져의 컴포넌트에리지드바디와 캡슐콜라이더를 추가해줬습니다.리지드바디는 물리효과를 주기 위함과 동시에 이동구현 코드에 필요합니다.캡슐 콜라이더는 충돌효과를 위해 필요합니다. 3)UnitController라는 유닛의 기능을 담당할 스크립트를 새로 만들었습니다.여기서 캐릭터의 이동과 카메라의 회전 등을 담당할 것입니다.카메라를 담당하는 스크립트를 따로 만들어도되지만 유닛전용 카메라이기 때문이기도 하고 카메라 시점에따라 유닛이 바라보는 방향이 달라져야 하기때문에 그냥 하나의 스크립트에 작성했습니다. [UnitController.cs]pu..
서론지금까지 FPS게임을 만들어본 적 없고, 평소에 오버워치를 즐겨하기 때문에 만들어봅니다.최대한 비슷하게 만들어보려 노력할 것입니다.일단 어느정도 만들어놨습니다.1. 프로젝트 세팅지금까지 프로젝트를 빌트인 렌더파이프라인으로 만들었습니다.오버워치는 FPS이면서 꽤나 고퀄 게임이기 때문에URP로 만들어줄겁니다.2. 캐릭터 세팅캐릭터는 일단 솔져를 대상으로 만들었고,아바타는 Mixamo 사이트에서 Y Bot 캐릭터를 받아왔습니다. 믹사모 사이트에 들어가서 로그인 또는 가입을 한 후1) 좌측 상단 Characters버튼 클릭 후 Y Bot이라는 캐릭터를 클릭해 적용시켜줍니다.2) 다시 좌측상단 Animations버튼 클릭 후 Pro Rifle Pack을 클릭3) 다운로드를 클릭합니다. 4) Format창을 클..