스파르타 게임개발종합반(Unity)/사전캠프 공부 기록

[Unity/2D] 마우스 왼쪽 버튼이 눌러졌을 때 캐릭터 방향 전환하기 - Mouse Input

테크러너 2024. 3. 28.

시작하기 전에 이전 포스터 내용 참고해주세요!

2024.03.28 - [Unity/2D] - [Unity/2D] 캐릭터 방향 전환하기, 플립(Flip)

 

 

        // 마우스 왼쪽 버튼(0)이 눌러졌을 때
        if (Input.GetMouseButtonDown(0))
        {
            direction *= -1;
            renderer.flipX = !renderer.flipX; // renderer.flipX가 true면 false, false면 true
        }

 

Input.GetMouseButtonDown() 을 통해 마우스 입력값을 받아올 수 있습니다.

괄호 안에 숫자에 따라 마우스 입력값이 다릅니다.

더보기

0 : 마우스 왼쪽 버튼

1 : 마우스 오른쪽 버튼

2 : 마우스 휠 버튼

3~6 : 그외 마우스 추가 버튼

 

마우스 왼쪽 버튼을 클릭했을 때

direction *= -1; 을 해주면

-0.05f(왼쪽 방향)일 때는 0.05f(오른쪽 방향)로 바뀌고,

0.05f(오른쪽 방향)일 때는 -0.05f(왼쪽 방향)로 바뀝니다.

 

renderer.flipX = !renderer.flipX;

현재 flip의 X값이 true(왼쪽 방향)이면 false(오른쪽 방향)로 바뀌고,

현재 flip의 X값이 false(오른쪽 방향)이면 true(왼쪽 방향)로 바뀝니다.

 

그럼 최종적으로 마우스 왼쪽 버튼을 클릭하면 현재 방향에서 반전된 방향으로 움직이겠죠?

아래는 전체 코드입니다.

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

public class Rtan : MonoBehaviour
{
    float direction = 0.05f;

    SpriteRenderer renderer;

    // Start is called before the first frame update
    void Start()
    {
        Application.targetFrameRate = 60; // 어떤 기기든지 1초에 60번만 계산될 수 있게끔 설정
        renderer = GetComponent<SpriteRenderer>(); // renderer라는 변수에 SpriteRenderer 컴포넌트에 대한 정보들이 담겨짐
        // 주의! 이 스크립트가 붙여진 오브젝트에 같이 있는 컴포넌트만 GetComponent로 불러올 수 있음!
    }

    // Update is called once per frame
    void Update()
    {
        // 마우스 왼쪽 버튼(0)이 눌러졌을 때
        if (Input.GetMouseButtonDown(0))
        {
            direction *= -1;
            renderer.flipX = !renderer.flipX; // renderer.flipX가 true면 false, false면 true
        }

        // 오른쪽 벽에 부딪혔을 때 왼쪽으로 방향 전환
        if(transform.position.x > 2.6f)
        {
            renderer.flipX = true; // 체크되었을 때 왼쪽 방향으로 전환
            direction = -0.05f;
        }

        // 왼쪽 벽에 부딪혔을 때 오른쪽으로 방향 전환
        if (transform.position.x < -2.6f)
        {
            renderer.flipX = false; // 체크되지 않았을 때 오른쪽 방향으로 전환
            direction = 0.05f;
        }

        transform.position += Vector3.right * direction; // Vector3.right == new Vector3(1f, 0, 0);
        // 1 * 0.05, 0 * 0.05, 0 * 0.05 == 0.05, 0, 0
    }
}
 

 

 

다음편

2024.03.28 - [Unity/2D] - [Unity/2D] 중력, 충돌을 이용하여 빗방울 구현하기 - Rigidbody, Collider, OnCollisionEnter, Destroy

 

모바일 화면 크기 설정이 궁금하다면?

2024.03.28 - [Unity/기타] - [Unity] 모바일 크기 설정 / 디스플레이 설정

 

반응형

댓글