Unity2D_Basic #1

haechi·2021년 7월 16일
0

unity

목록 보기
22/39

210716
Unity2D_Basic #1


  • 게임 오브젝트 이동

2D project를 생성시 생기는 화면

sprite생성 -> 이미지 -> C# script를 컴포넌트로 추가

transform.position += Vector3.right * 1 * Time.deltaTime;

-Time.deltaTime을 곱하는이유
Time.deltaTime -> 이전 Update()의 종료부터 다음 Update() 시작까지의 시간
ex) pc마다의 사양 차이
pc_a = 60초에 Update() 60회 호출
Time.deltaTime = 1
pc_b = 60초에 Update() 120회 호출
Time.deltaTime = 0.5
이동거리 = 방향 * 속도 * Time.deltaTime
Update() 1회에 캐릭터가 5m움직인다 가정 ->
5m X 60 X 1 = 300m
5m X 60 X 0.5 = 300m

pc의 사양에 따라서 움직임이 달라지는것을 방지

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

public class Movement2D : MonoBehaviour
{
    private void Update()
    {
        // 새로운 위치 = 현재 위치 + (방향 * 속도)
        //transform.position = transform.position + new Vector3(1, 0, 0) * 1;
        transform.position += Vector3.right * 1 * Time.deltaTime;
    }    
}

-원하는 방향키를 눌렀을 때 이동하는 기능

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

public class Movement2D : MonoBehaviour
{
    private float moveSpeed = 5.0f; // 이동 속도    
    private Vector3 moveDirection = Vector3.zero;   // 이동 방향

    private void Update()
    {
        // Negative left, a : -1
        // Positive right, d : 1
        // Non : 0
        float x = Input.GetAxisRaw("Horizontal");   // 좌우
        // Negative down, s : -1
        // Positive up, w : 1
        // Non : 0
        float y = Input.GetAxisRaw("Vertical");     // 상하

        // 이동 방향 설정
        moveDirection = new Vector3(x, y, 0);

        // 새로운 위치 = 현재 위치 + (방향 * 속도)
        transform.position += moveDirection * moveSpeed * Time.deltaTime;
    }    
}

Input.GetAxisRaw()를 이용해서 좌, 우는 Horizontal 상, 하는 Vertical 키워드를 이용한다.

참고
https://www.inflearn.com/course/%EA%B3%A0%EB%B0%95%EC%82%AC-%EC%9C%A0%EB%8B%88%ED%8B%B0-%EA%B8%B0%EC%B4%88/dashboard

profile
공부중인 것들 기록

0개의 댓글