728x90
6. Time.delta.Time
- 이전 프레임의 시작 시각부터 현재 프레임이 시작되는 시각의 차(델타).
- 소스코드가 같더라도 다른 환경에서 실행하면 속도가 달라지는 문제를 Time.deltaTime 을 곱함으로 해결.
- 30 프레임 구동 기기 : Time.deltaTime 값 1/30s
//프레임마다 10유닛씩 이동
transform.Translate(Vector3.forward * 10)
//매 초 10유닛씩 이동
transform.Translate(Vector3.forward * Time.deltaTime * 10)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCtrl : MonoBehaviour
{
privae Transform tr;
public float moveSpeed = 10.0f;
void Start()
{
tr = GetComponent<Transform>();
}
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Debug.Log("h=" + h);
Debug.Log("v=" + v);
//Translate 함수를 사용한 이동 로직
tr.Translate(Vector3.forward * Time.deltaTime * v * moveSpeed);
}
}
- tr.Translate({이동할 방향} * Time.deltaTime * {전진/후진 변수} * {속도});
7. public, private 접근 제한자
- c# 지원 접근 제한자
public | 외부 클래스 O |
private | 동일 클래스 O, 외부 클래스 X |
potected | 외부 접근 X, 파생 클래스 O |
internal | 같은 어셈블리 O, Default로 설정시 internal 접근 제한자로 설정. |
- [접근 제한자] 변수_타입 변수명;
// 인스펙터 뷰에 노출되지 않음
private Transform tr;
// 인스펙터 뷰에 노출됨
public float moveSpeed = 10.0f
8. 우선순위
- 인스펙터 뷰에 적용한 값이 스크립트에 적용한 값보다 우선순위로 작용함.
- 인스펙터 뷰를 디버그 모드로 설정하면 private 변숫값 확인 가능.
- 디버그 모드에서 변숫값 확인 후 반드시 노멀 모드로 전환해야함.
- SerializeField 속성을 사용하여 private 변숫값 확인 가능
9. 벡터의 덧셈 연산
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCtrl : MonoBehaviour
{
private Transform tr;
public float moveSpeed = 10.0f;
void Start()
{
tr = GetComponent<Transform>();
}
void Update()
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
Debug.Log("h=" + h);
Debug.Log("v=" + v);
//전후좌우 이동 방향 벡터 계산
Vector3 moveDir = (Vector3.forward * v) + (Vector3.right * h);
//Translate(이동 방향 * 속력 * Time.deltaTime)
tr.Translate(moveDir * moveSpeed * Time.deltaTime)l
}
}
- Vector3.normalized 속성 : 벡터의 방향 성분 추출을 위해 정규화 벡터로 변경.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerCtrl : MonoBehaviour
{
private Tranform tr;
public float moveSpeed = 10.0f;
void Start()
{
tr = GetComponent<Transform>();
}
void Update()
{
float h = Input.GetAxis("Hotizontal");
float v = Input.GetAxis("vertical");
Debug.Log("h=" + h);
Debug.Log("v=" + v);
// 전후좌우 이동 방향 벡터 계산
Vector3 moveDir = (Vector3.forward * v) + (Vector3.right * h);
// Translate(이동 방향 * 속력 * Time.deltaTime)
tr.Translate(moveDir.normalized * moveSpeed * Time.deltaTime);
}
}
728x90
'STUDY > Unity' 카테고리의 다른 글
[유니티 기초] 캐릭터의 이동(1) (0) | 2022.02.17 |
---|---|
[유니티 기초] 키보드 입력 값 받아들이기 (0) | 2022.02.17 |
유니티의 주요 이벤트 함수 (0) | 2022.02.11 |
유니티 엔진의 개발방식 (0) | 2022.02.11 |