반응형 Unity7 카메라 Player 따라다니기 다른버젼 public class MainCameraController : MonoBehaviour { [SerializeField] Transform player; private void LateUpdate() { Vector3 targetPos = new Vector3(player.position.x, player.position.y, this.transform.position.z); transform.position = targetPos; } } 카메라가 따라갈 위치 변수를 만들어주고, 카메라 위치를 위치 변수로 설정하면 된다. 중요한 건 LateUpdate메서드를 사용해야 한다는 것이다. 플레이어가 움직이면 위치가 변경되는데 카메라 위치도 같은 프레임에 변경되게 하면 카메라 위치가 버벅된다. 플레이어 위치가.. 2023. 3. 15. 카메라가 플레이어 따라다니게 하기 cameraController 스크립트 생성 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraController : MonoBehaviour { public float cameraSpeed = 3.0f; public GameObject player; private void Update() { Vector3 dir = player.transform.position - this.transform.position; Vector3 moveVector = new Vector3(dir.x * cameraSpeed * Time.deltaTime, dir.y * cameraSpeed * Tim.. 2023. 3. 15. void LateUpate() 유니티 함수로, 매 프레임마다 실행되지만 Update()함수 보다 늦게 실행된다. Update() 함수 실행이 다 끝난 후에, Update()함수의 종료 시점에 맞춰서 LateUpdate() 가 실행된다. 예를 들어 캐릭터의 이동 방향 계산은 Update() 에서 끝내준 후,Update()에서 계산 끝낸 캐릭터의 이동 방향에 따라 LateUpdate()에서 카메라가 캐릭터를 따라가도록 하는 식으로 구현한다. 만약 Update() 함수로 했다면, PlayerController.cs 에서 플레이어의 위치와 회전값을 업데이트 하는 것과 CameraController.cs 에서 플레이어의 위치와 회전을 업데이트 하는 것이 같은 Update()로서 동시에 섞여 실행되기 때문에 아직 업데이트 되지 않은 플레이어의 .. 2023. 3. 14. void FixedUpdate() 디폴트로 0.02초 (초당 50회)마다 실행된다. Update()처럼 매번 반복 실행되나 프레임에 기반하지 않고 어떤 고정적이고 동일한 시간에 기반하여 실행된다. Update()와의 차이점 Update()는 화면 한번 깜빡일때마다 실행되서 렉걸리거나 환경이 안좋거나 하면 그만큼 Update()도 적게 실행되지만 Fixedupdate()는 환경에 상관없이 무조건 실행 횟수를 지킨다. 정해진 수만큼 무조건 실행 함 프레임과 상관없이 고정적인 시간마다 실행되기 때문에 환경에 상관없이 물리처리를 오차 없이 실행시킬 수 있다. 물리처리는 FixedUpdate() 안에서 해주기. Time.fixedDeltaTime 의 시간 간격으로 실행이 된다. 디폴트로 Time.fixedDeltaTime 값은 0.02f 이다. .. 2023. 3. 14. void Update() 1초에 수십번씩 자신의 상태를 갱신하고 주기적으로 계속 실행 외부에서 직접 찾아 실행할 필요 없음. 스스로 매 프레임마다 실행 됨. 프레임 속도는 환경마다 다르기 때문에 물리 처리를 update() 함수에서 해주면 환경에 따라 물리 처리 오차가 발생할 수 있어 비추천 2023. 3. 14. void Awake() Start()와 비슷한데 Start()보다도 먼저 실행되는 시작 함수다. Start 함수의 이전 및 프리팹의 인스턴스화 직후에 호출 생성 하자마자 들어가는 1회 동작 함수 Start 메세지보다 더 빨리 호출되므로 다른 스크립트들의 Start보다 더 빨리 실행되야 하는 내용이 있으면 Awake에 구현하면 된다. 오브젝트가 최초 생성될 때 실행 순서 Awake() 👉 OnEnable() 👉 Start() Start 와의 차이점 둘 다 오브젝트가 생성될 때(스크립트가 최초로 실행될 때) 최초 1회 실행된다는 점에서 같다. 그러나 Awake() 코루틴 실행이 안된다. Start()보다 먼저 실행된다. 스크립트(컴포넌트)가 비활성화인 상태에서도 실행된다. 꺼져있어도 실행 됨. 오브젝트가 활성화되있기만 하면 된다... 2023. 3. 14. 이전 1 2 다음 반응형