[Unity] HeadBob 구현

2025. 4. 17. 15:08·Game Engine/Game Project

 

🔍 Headbob이란?

사람이 움직일 때 시야가 흔들리듯이 이동시에 카메라가 흔들리는 효과

 

Player에 하위의 카메라를 담은 빈오브젝트 카메라 루트에다 스크립트를 붙여주었습니다.

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

public class HeadBob : MonoBehaviour
{
    // Start is called before the first frame update
    [Range(0.001f, 0.01f)]
    public float Amount = 0.002f;

    [Range(1f, 30f)]
    public float Frequency = 10.0f;
    [Range(10f, 100f)]
    public float Smooth = 10.0f;


    // Update is called once per frame
    void Update()
    {
        CheckForHeadbobTrigger();
    }

    void CheckForHeadbobTrigger()
    {
        float headMagnitude = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")).magnitude;
        if(headMagnitude > 0)
        {
            StartHeadBob();
        }
    }

    private Vector3 StartHeadBob()
    {
        Vector3 pos = Vector3.zero;
        pos.y += Mathf.Lerp(pos.y, Mathf.Sin(Time.time * Frequency) * Amount * 1.4f, Smooth * Time.deltaTime);
        transform.localPosition += pos;
        return pos;
    }
}

 

 

🌃CheckForHeadbobTrigger

먼저 Update에 캐릭터가 이동이 있는지 확인을 해야합니다.

이동 크기가 0보다 크다면 HeadBob을 실행해주어야합니다.

 

🌃StartHeadBob

headbob 실행 함수 입니다.

카메라를 흔들 pos변수를 zero로 초기화 해줍니다.

이게임에 상하만 흔들리게 하고 싶어서 pos.y를 사용합니다.

자연스러운 상하 흔들림을 위해 Mathf.Lerp로 현재값, 목표값, 보간속도를 넣어줍니다

현재값에 pos.y를 넣어줍니다

Frequency가 높을수록 빠르게 진동하고 Amount가 클 수록 흔들림의 크기를 조절합니다.

그리고 현재 transform에 pos를 더해주면 잘 적용이됩니다.

 

 

'Game Engine > Game Project' 카테고리의 다른 글

[Unity] 리팩토링 작업  (0) 2025.04.25
[Unity] 덜컹 거리는 움직임  (0) 2025.04.18
[Unity] JsonUtility NewtonSoft JSON 차이  (0) 2025.04.15
[Unity] Parsing  (1) 2025.04.14
[Unity] Setter 메서드  (0) 2025.04.11
'Game Engine/Game Project' 카테고리의 다른 글
  • [Unity] 리팩토링 작업
  • [Unity] 덜컹 거리는 움직임
  • [Unity] JsonUtility NewtonSoft JSON 차이
  • [Unity] Parsing
Xenawn
Xenawn
제넌 게임개발 블로그
  • Xenawn
    Xenawn
    Xenawn
  • 전체
    오늘
    어제
    • 분류 전체보기 (88) N
      • Language (25) N
        • C++ (5) N
        • C# (20)
      • Game Engine (32)
        • Unity (19)
        • Unity API (1)
        • Game Project (12)
      • Git (3)
      • Algorithm (18)
        • BOJ [C++] (17)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    fps cam
    POTION
    headbob
    내일배움캠프
    C++
    프레임
    알고리즘
    리스트
    유니티
    FizzBuzz
    CPP
    객체
    배열
    클래스
    FPS
    c#
    백준
    Unity
    BOJ
    string format
    게임개발
    프로퍼티
    카메라 움직임
    문자열 보간
    포션
    1181
    걸음fps
    스파르타내일배움캠프 #스파르타내일배움캠프til
    블랙잭
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Xenawn
[Unity] HeadBob 구현
상단으로

티스토리툴바