원문: doc.photonengine.com/ko-kr/pun/current/demos-and-tutorials/pun-basics-tutorial/player-prefab
드디어 플레이어를 만든다.
1. 프리팹 생성 (원문과 내용이 다를 수 있음)
프로젝트 창에서 마우스 우클릭을 하여 Assets 안에 Resources 창을 만들어주고, 이름을 Resources로 해주자.
새로운 씬을 만들어주고, 방금 만든 폴더 안에 Kyle Test로 저장하자.
해당위치까지 가서 Robot Kyle 메시를 확인하고, 이걸 드래그해서 Hierarchy 창에 넣자.
위 이미지처럼 하면 성공이다. 다음으로 Robot Kyle의 이름을 My Robot Kyle로 변경해주자.
그리고 Hierarchy 창에서 My Robot Kyle 객체를 잡아서 Assets->Resources 폴더로 드래그 해주자.
그럼 위 창이 뜬다. 그냥 Original Prefab으로 선택해주었다.
2. 캐릭터 컨트롤러
My Robot Kyle에게 CharacterController 컴포넌트를 추가하자.
My Robot Kyle 객체를 선택한 상태에서 아래처럼 컴포넌트를 검색해서 추가하면 끝이다.
그리고 아래 처럼 Center y의 값을 1로 변경하자
마지막으로 아래그림처럼 이동해서 우하단의 Apply all을 눌러주자.
3. 애니메이터 설정 - 애니메이터 컨트롤러 지정하기
My Robot Kyle의 Animator 를 보면 Controller가 비어있는 것을 알 수 있다.
우측의 동그라미 버튼을 눌러주면 아래 이미지가 나오는데 여기서 Kyle Robot을 선택하자.
그리고 또 apply를 해주자.
4. 애니메이터 설정 - 컨트롤러 파라미터 작업하기
우선 캐릭터 제어 스크립트부터 작성한다.
PlayerAnimatorManager.cs 파일을 생성하고, My Robot Kyle 객체에 삽입해준다.
이작업을 할 때 주의할점이, PlayerAnimatorManager.cs 파일이 두개가 검색된다는 것이다. 지금 만든 파일을 삽입해줘야하니 주의하자.
그리고 스크립트 파일을 원문 내용에 맞게 코딩해주자.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Collections;
namespace Com.MyCompany.MyGame
{
public class PlayerAnimatorManager : MonoBehaviour
{
#region MonoBehaviour Callbacks
private Animator animator;
// Use this for initialization
void Start()
{
animator = GetComponent<Animator>();
if (!animator)
{
Debug.LogError("PlayerAnimatorManager is Missing Animator Component", this);
}
}
// Update is called once per frame
void Update()
{
if (!animator)
{
return;
}
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
if (v < 0)
{
v = 0;
}
animator.SetFloat("Speed", h * h + v * v);
}
#endregion
}
}
위처럼 작성되면 완성이다.
5. 테스트
씬에 큐브를 넣자
위 처럼 해주면 아래처럼 나온다.
아래 처럼 메인 카메라 객체에서 우클릭하여 객체를 따라다니게 설정한다.
다음으로 My Robot Kyle의 y축 위치값을 살짝 바꿔서 바닥에서 떼어주자.
이제 재생해보자.
화살표 윗 버튼을 누르면 앞으로 걸어간다.
결과는 영상을 통해 확인해보자.
6. 방향 제어하기
원문을 따라서 작업하자.
결과는 다음 영상으로 확인하자.
7. 점프하기
원문을 따라 작업하자.
결과적으로 Update 함수는 다음처럼 나와야한다.
void Update()
{
if (!animator)
{
return;
}
// deal with Jumping
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);
// only allow jumping if we are running.
if (stateInfo.IsName("Base Layer.Run"))
{
// When using trigger parameter
if (Input.GetButtonDown("Fire2"))
{
animator.SetTrigger("Jump");
}
}
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
if (v < 0)
{
v = 0;
}
animator.SetFloat("Speed", h * h + v * v);
animator.SetFloat("Direction", h, directionDampTime, Time.deltaTime);
}
결과는 다음 영상으로 확인하자.
점프가 살짝 어색하긴 하다.
8. 카메라 설정
My Robot Kyle 객체에 Camera Work 컴포넌트를 추가해준다.
값을 위처럼 설정해주자.
그리고 Apply 해준 뒤 실행시켜보자. 결과는 영상으로 보자
9. 빔 제작
우선 큐브를 잘 조작해서 빔처럼 보이게 한 뒤, 왼쪽 눈 근처에 배치시킨다.
이렇게 나오면 된다.
Beam Left를 이동시켜서 Head 밑에 위치하게 한다.
Head 아래에 Beams 객체를 만들고(빈객체) 그 아래 Beam Left를 넣어준다.
Beam Right도 만들어준다.
빔 두개를 하나의 Collider로 판정하도록 할 것이므로, Beam Right의 콜라이더를 없애준다.
Beam Left의 박스 콜라이더를 조작해서 아래 그림처럼 두 빔이 모두 커버되게 해준다.
아래 그림처럼 Box Collider 내의 is Trigger를 체크해주어서 플레이어와 닿았을 경우에만 이벤트를 발생시키게 해준다.
주의사항이 있는데, 빔이 캐릭터와 닿아있으면 안된다.
위 그림처럼 약간의 거리를 주자.
다음으로 빔을 빨갛게 해보겠다.
에셋 창에서 우클릭을 누른후 하단 이미지를 따라가서 새로운 Material 을 만들고 Red Beam로 이름을 바꿔주자
Red Beam 마테리얼을 클릭한 후 인스펙터 창에서 Albedo를 수정해주자.
Beam Left와 Beam Right에 마테리얼을 드래그 해서 적용해주자.
10. 빔 제어
원문을 보고 따라하자.
결과적으로 My Robot Kyle 객체는 다음과 같은 인스펙터 창을 가져야한다.
결과는 영상으로 확인해보자.
ctrl 버튼을 누르면 빔이 나왔다 사라진다. 참고로 나는 이 내용을 확인해보고 빔의 길이를 늘였고, 위 영상은 빔을 늘여서 촬영한 결과이다.
11. 체력 설정
빔에 맞고 체력이 줄어든다는 컨셉이다.
원문을 따라서 스크립트 작업을 하자.
12. 게임 종료를 위한 체력 체크
원문을 따라서 스크립트 작업을 하자.
이제 네트워크를 연동하면 게임 비스무리한게 나올 것 같다.
오늘은 여기까지.
'Server' 카테고리의 다른 글
Photon Unity Networking PUN 튜토리얼 따라하기 7 (0) | 2021.05.11 |
---|---|
Photon Unity Networking PUN 튜토리얼 따라하기 6 (0) | 2021.05.10 |
Photon Unity Networking PUN 튜토리얼 따라하기 4 (0) | 2021.05.07 |
Photon Unity Networking PUN 튜토리얼 따라하기 3 (0) | 2021.05.06 |
Photon Unity Networking PUN 튜토리얼 따라하기 2 (0) | 2021.05.06 |