Enemy에 적용할 에셋
https://assetstore.unity.com/packages/3d/characters/humanoids/zombie-30232
Enemy prefab에 Zombie 적용
Animation Controller를 만들고 Z_Idel 애니메이션 적용
Player에 적용할 에셋
https://assetstore.unity.com/packages/3d/characters/low-poly-soldiers-demo-73611
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;
}
}
'공부 > Unity 기초' 카테고리의 다른 글
3D FPS - 14 / 애니메이션 상태 설계 (0) | 2022.05.25 |
---|---|
3D FPS - 13 / 사다리 이동 (0) | 2022.05.24 |
3D FPS - 11 / 적 시야각 (0) | 2022.05.23 |
3D FPS - 10 / 적 생성 유지 (0) | 2022.05.21 |
3D FPS - 9 / 네비게이션 알고리즘으로 길찾기 (0) | 2022.05.21 |