728x90

필요한 신

1. 타이틀 신 

1.1 인트로

1.2캐릭터선택창

1.3 튜토리얼

2. 메인 신 

2.1 인벤토리

2.2 강화

2.3 퀘스트 및 업적

3. 인게임 신

3.1 캐릭터 구현 

3.2 스킬 구현

3.3 몬스터 구현

3.4 몬스터 패턴

3.5 아이템 드랍

저번에 했던 UMA는 쓰려다가 애니메이션 구하기가 너무 힘들고 옷구하기가 힘들어서 갈아엎고 오늘은 Mixamo 에서 다운받아서 진행하겠습니다.

 

게임캐릭터 생성신을 만들겁니다.

 

일단은 저는 캐릭터들이 서 있는 상태인데 마우스 클릭 or Touch  를 받으면 애니메이션 재생후 선택이 되도록 하고싶어서 만들어 볼려고합니다.

 

Mixamo 에서 적당한 캐릭터들을 골라서 진행했습니다.

 

Fighter, Archer, Paladin, Warrior 

총 4가지 클래스 구현해볼거구요 

 

Fighter 먼저 구현 해보겠습니다.

 

일단은 아무 Scene 생성후 들어가주시고요 

 

MainCarmera BackGround 를 Solid Color 로 변경했습니다. (이거는 작동하는데 아무이상없으니 변경안하셔도됩니다.)

 

 

 

그러고나서 선택한 적당한캐릭터를 추가해줍니다.

 

제 캐릭터는 너무커서 Scale 조정 해줬습니다 .

그리고 이 캐릭터를 작동시켜줄 Anim을 추가 시켜주기위해 화면에보이는 Animation 창에 Create 를 눌러  적당한 이름을 붙혀서 생성 해줍니다.

 

그러고나서는 필요한 Animation 을 다운받아 줍니다 .

 

 

Fighter 애니메이션 순서 진행 Mixamo 애니메이션 이름 
kneeling - > jumping down  ->standing -> Standing Idle To Fight idle -> Bouncing Fight Idle

폴더를 만들어서 정리해주시면 프로젝트 진행하기 편하더라구요 팀 프로젝트하면서 깨달았습니다.

 

 

저 안에 있는 것들에 애니메이션 클립 이름을 변경해주셔야 헷갈리지않게 사용가능합니다.(Mxiamo 애니메이션만 해당)

 

Mixamo.com 이라고 되어있는 부분을 변경하시고 Apply 눌러주시면 이름이 적용됩니다.

 

모든 애니메이션 이름변경후 저는 앉아있는 상태를 평상시 상태로 둘거기때문에 Kneeling애니메이션을 animator 창으로 끌어서 추가하신후 원래 연결되있던 Animation 을 지워주시면 자동으로 연결됩니다 .

 

그러고 이상태는 선택되기전까지는 항상 유지되어야하기때문에 루프타임을 체크해줍니다.

 

LoopTime 을 체크해주셔야 애니메이션이 끝나지않고 계속 반복됩니다.

 

그러면 실행을 해주시면 

애니메이션이 적용되는걸 보실수 있습니다. 

 

여기서 선택했을때 애니메이션을 재생해줘야하기때문에 

파라메터에 trigger값을 추가해줍니다. 이름은 적당한거로 지어주세요. (Trigger로 한이유는 마우스클릭시 애니메이션이 재생되면 되기때문에)

 

 

Jumping down, Standing 모두 추가해줍니다. 

 

그러고  Anystate에서 Make Transition 클릭후 Jumpind down 먼저 이어주시고 다음 Standing 으로 이어주세요.

 

먼저 Anystate 와  Jumping Down 사이 화살표 클릭후 trigger 값이 입력받을때 재생되도록 해주세요.

 

 

Bouncing Fight Idle 도 Loop Time 켜주시면됩니다. 

 

애니메이터 최종모습이구요 

연결후 재생한후 파라메터에서 트리거를 전달해주니 JumpingDown이 너무 높이올라갓다 너무 내려가서 그걸 조정해줍니다.

 

 

 

대충 이런식으로 저장됩니다. 

 

그럼이제 선택이 되었을때 Pick trigger 동작 해줘야하니까 스크립트 짜보겠습니다.

 

 

 

빈오브젝트 생성해서 스크립트 추가했습니다. 

그리고 ray를 쏴야하기때문에 collider 를 Fighter에 넣어줬습니다. 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickCharacter : MonoBehaviour
{

    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            
            Debug.DrawRay(transform.position, transform.forward * 999.0f, Color.red, 0.3f);
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out RaycastHit hit, int.MaxValue,1<<LayerMask.NameToLayer("Fighter")))
            {
                if(hit.collider != null)
                {
                    hit.transform.GetComponent<Animator>().SetTrigger("Pick");
                }
               
               

            }
        }


    }

스크립트는 대충 이런식으로 구현됬구요 

 

Debug. DrayRay Ray가 잘나가는지 확인하기위해

 

LayerMask 네임이 Fighter 이면 hit.collider 가 비어있지않다면 셋트리거를 해주도록 스크립팅 했고.

 

이후 Fighter Layer를 Fighter 로 변경

 

그리고 실행시키게되면 

 

Fighter Pick 은 여기서 끝났구요

 

다음 

Warrior 구현 해볼 예정입니다 Warrior 는 두손검을 사용하는 여자 캐릭터를 사용할예정입니다.

 

 

 

Warrior 애니메이션

 

Sitting -> Sit to stand - > Draw greatSword -> Greate Sword Idle 

 

이 순서대로 진행할 예정입니다.

 

Fighter 와 똑같이 sitting, Greate Sword Idle 은 Looptime 체크해주시고 나머지들 다이름 바꿔주시고 

 

캐릭터 추가해줍니다.

이 캐릭터 같은경우는 등뒤에서 칼을 꺼내기때문에 평소에는 등뒤에 칼을 놓기위해 Back 위치 생성후 검 복사해서 넣어줬습니다.

 

똑같이 Anim 생성후 

연결 해줍니다.

 

애 같은 경우는 Draw greatSword 에 Animation Event 를 추가해서 적절한 타이밍에 등뒤에 검을 false 로 손에검을 true 로 바꿔줄거기때문에 복사해서 작업하셔야 animation event가 생성됩니다. 

복사한 파일을 Animation에 추가해주셔야하구요 똑같이 trigger pick 만들어주고 AnyState 에서 sit to stand 가는 화살표에 트리거 놔주세요. 

 

그리고 Worrior 에 스크립트 하나 생성해서 추가해줍니다 anim event 에서 호출할 함수 만들어주기위해 . 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WarriorSword : MonoBehaviour
{
    // Start is called before the first frame update

    public GameObject BackSword;
    public GameObject HandSword;
  public void Sword()
    {
        BackSword.SetActive(false);
        HandSword.SetActive(true);
    }
}

event 호출용 스크립트 입니다. 

 

Update 나 start는 쓰지않는다면 무조건 지워주는게 이롭습니다.

 

어차피 4직업다 만들고나서 ray 에서 구별할 예정이기때문에 Fighter 에서 Warrior 로 변경해주시고 warrior 똑같이 레이어 warrior 생성후 설정해주시고 검토만진행했습니다.

 

 

팔라딘부터는 그냥 완성된 영상만 올리겠습니다. 하는방법이 똑같기때문에

 

팔라딘

 

 

아처 

 

 

 

 

이로써 캐릭터생성씬에서 캐릭터선택시 애니메이션은 다구현했고 내일은 캐릭터 생성 씬을 제대로 만들어볼 생각입니다 

반응형