응용프로그램/유니티(Unity)

Unity2D_Player에 카메라 붙이기

zelkova 2017. 2. 14. 10:55

<목차로 돌아가기>


 Player에 카메라 붙이기


플레이어에 객체에 "Player" 태그를 달아줍시다



아래의 소스를 카메라에 부착합니다.


  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;

  4. public class CameraFollow : MonoBehaviour {

  5.     private Vector2 velocity;
  6.     private float smoothTimeY;
  7.     private float smoothTimeX;

  8.     public GameObject player;
  9.  
  10.     public bool bounds;
  11.  
  12.     public Vector3 minCameraPos;
  13.     public Vector3 maxCameraPos;

  14.     void Start()
  15.     {
  16.         player = GameObject.FindGameObjectWithTag ("Player");
  17.     }

  18.     void FixedUpdate()
  19.     {
  20.         float posX = Mathf.SmoothDamp (transform.position.x, player.transform.position.x, ref velocity.x, smoothTimeX);
  21.         float posY = Mathf.SmoothDamp (transform.position.y, player.transform.position.y, ref velocity.y, smoothTimeY);

  22.         transform.position = new Vector3 (posX, posY, transform.position.z);
  23.         if(bounds)        
  24.         {
  25.             transform.position = new Vector3(
    Mathf.Clamp(transform.position.x,minCameraPos.x,maxCameraPos.x),
    Mathf.Clamp(transform.position.y,minCameraPos.y,maxCameraPos.y),
    Mathf.Clamp(transform.position.z,minCameraPos.z,maxCameraPos.z));
  26.        }
  27.     }
  28. }



그리고 플레이 하면 !



※ 캐릭터 움직이는건 이전 포스팅 참조!


 기타정리



SmoothDamp

원하는 목표를 향해서 점차적으로 변화시킨다.

    public static Vector3 SmoothDamp(

    Vector3 current, 

    Vector3 target, 

    ref Vector3 currentVelocity, 

    float smoothTime, 

    float maxSpeed = Mathf.Infinity, 

    float deltaTime = Time.deltaTime

);



current

현재 위치.


target

도달하려는 위치.


currentVelocity

현재 속도, 이 값은 매번 호출되는 함수에 의해 수정됩니다.


smoothTime

타겟에 도달하기 위한 대략적인 시간. 작은 값일수록 타겟에 빠르게 도달합니다.


maxSpeed

선택적으로 최대속도를 고정할 수 있도록 합니다.


deltaTime

이 함수가 마지막으로 호출되고 나서의 경과 시간. default는 Time.deltaTime.


Clamp

값을 최소값과 최대값 사이에서 고정시킨다.
Mathf.Clamp (value, 최소값, 최대값)

Mathf.Clamp (15, 1, 10)  결과는 10이다.




반응형