본문 바로가기
공부/Unity 기초

3D FPS - 12 / 모델링 적용

by svcbn 2022. 5. 23.

Enemy에 적용할 에셋

 

 

https://assetstore.unity.com/packages/3d/characters/humanoids/zombie-30232

 

Zombie | 3D 휴머노이드 | Unity Asset Store

Elevate your workflow with the Zombie asset from Pxltiger. Find this & other 휴머노이드 options on the Unity Asset Store.

assetstore.unity.com

 

 

 

 

 

Enemy prefab에 Zombie 적용

 

 

 

 

 

Animation Controller를 만들고 Z_Idel 애니메이션 적용

 

 

 

 

 

 

 

 

 

Player에 적용할 에셋

https://assetstore.unity.com/packages/3d/characters/low-poly-soldiers-demo-73611

 

Low Poly Soldiers Demo | 3D 캐릭터 | Unity Asset Store

Elevate your workflow with the Low Poly Soldiers Demo asset from Polygon Blacksmith. Find this & other 캐릭터 options on the Unity Asset Store.

assetstore.unity.com

 

 

 

 

 

Player에 Soldier_demo를 적용한다.

 

 

 

 

 

Player Animator Controller를 만들어 demo_combat_idle 적용

 

 

 

 

 

 

카메라를 돌려도 모델링은 움직이지 않는 문제를 해결하기 위해

몸의 각도도 마우스의 각도가 움직일때 회전해주기

 // 회전하고싶다.
        transform.eulerAngles = new Vector3(-rx, ry, 0);

        body.transform.eulerAngles = new Vector3(0, ry, 0);

 

 

 

 

 

CameraRotate 전문

더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

// 마우스의 입력값을 이용해서 회전하고싶다.
public class CameraRotate : MonoBehaviour
{
    public float rotSpeed = 200;
    public Transform body;


    float rx;
    float ry;

    Vector3 nearPosition;
    Vector3 farPosition;

    float wheelValue = 0;

    // Start is called before the first frame update
    void Start()
    {
        // 카메라의 가장 가까운 위치를 플레이어를 기준으로 현재 위치로 지정한다.
        nearPosition = transform.localPosition;

        
    }

    // Update is called once per frame
    void Update()
    {
        // 마우스의 입력값을 이용해서
        float mx = Input.GetAxis("Mouse X");
        float my = Input.GetAxis("Mouse Y");
        rx += my * rotSpeed * Time.deltaTime;
        ry += mx * rotSpeed * Time.deltaTime;

        // rx의 회전 각을 제한하고싶다. +80도 -80도
        rx = Mathf.Clamp(rx, -80, 80);

        // 회전하고싶다.
        transform.eulerAngles = new Vector3(-rx, ry, 0);

        body.transform.eulerAngles = new Vector3(0, ry, 0);

        // 카메라의 정면 방향을 기준으로 뒤쪽 방향의 5미터 지점
        farPosition = nearPosition + transform.forward * -5;

        // 마우스 스크롤 휠의 움직임 값을 받아온다.
        wheelValue -= Input.GetAxis("Mouse ScrollWheel");
        wheelValue = Mathf.Clamp(wheelValue, 0, 1.0f);

        // 시작 위치 - 종료 위치 중의 임의의 지점을 구한다.
        Vector3 camPosition = Vector3.Lerp(nearPosition, farPosition, wheelValue);

        // 구한 임의의 지점을 카메라의 위치로 설정한다.
        transform.localPosition = camPosition;
    }
}