플레이어가 키보드 입력에 따라 움직임
플레이어가 마우스 방향에 따라 회전함
카메라가 플레이어의 이동에 맞춰 이동함
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCtrl : MonoBehaviour
{
public float movespeed=1f;
public float turnspeed=1f;
private Animation anim;
private void Awake()
{
//첫번째 호출
}
private void OnEnable()
{
//두번째 호출
}
void Start()
{
//코루틴으로 호출 가능
// IEnumerator Start()
anim = GetComponent<Animation>();
anim.Play("Idle");
}
private void FixedUpdate()
{
//일정간격으로 호출
}
void Update()
{
//transform.Translate(Vector3.forward * speed * Time.deltaTime); //로컬좌표 기준으로,정면으로 이동
//transform.Translate(Vector3.forward * 0.01f,Space.World); //월드좌표 기준으로,회전한 상태로 이동
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Vector3 dir = new Vector3(h,0, v);
transform.Translate(dir.normalized * movespeed * Time.deltaTime);
float r = Input.GetAxis("Mouse X"); //회전방향
transform.Rotate(Vector3.up * turnspeed * r);
PlayerAnim( h, v);
}
private void LateUpdate()
{
}
private void PlayerAnim(float h, float v)
{
//키보드 입력에 따라 애니메이션 변화
if (v >= 0.1f)
{
this.anim.CrossFade("RunF", 0.25f);
}
else if(v<= -0.1f)
{
this.anim.CrossFade("RunB", 0.25f);
}
else if (h >= 0.1f)
{
this.anim.CrossFade("RunR", 0.25f);
}
else if (h <= -0.1f)
{
this.anim.CrossFade("RunL", 0.25f);
}
else
{
this.anim.CrossFade("Idle", 0.25f);
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowCam : MonoBehaviour
{
public Transform camTr; //카메라의 위치
public Transform targetTr; //타겟의 위치
[Range(2f, 20f)]
public float distance =10f; //카메라와 타겟의 거리
[Range(0, 10f)]
public float height = 2f; //카메라의 높이
public float damping=1f;
private Vector3 velocity;
public float targetOffset = 2f;
void Start()
{
camTr = GetComponent<Transform>();
}
private void LateUpdate()
{
// 카메라 이동
Vector3 pos = targetTr.position+(-targetTr.forward*distance)+(Vector3.up *height);
//구면 선형보간 / 부드럽게 움직이기
//camTr.position = Vector3.Slerp( camTr.position,pos, Time.deltaTime * damping);
camTr.position = Vector3.SmoothDamp(camTr.position, pos,ref velocity,damping);
// 카메라 회전
camTr.LookAt(targetTr.position+(targetTr.up *targetOffset));
}
}
'게임개발 > 게임엔진 응용 프로그래밍' 카테고리의 다른 글
절대강좌 유니티 (3)몬스터 만들기 (0) | 2024.03.14 |
---|---|
절대강좌 유니티 (2) 총 발사 (0) | 2024.03.13 |