GameDevelop/Unity기초쌓기

[Unity] 마우스 왼쪽 클릭시 캐릭터 방향전환 renderer.flipX, GetMouseButtonDown

도도돋치 2025. 3. 25. 19:45
Contents 접기
728x90

이번에는 마우스 이벤트가 발생했을 때 캐릭터를 좌우반전 시켜보자😄

 

(📖 이편은 전편과 이어집니다. 전편 보러가기  캐릭터 방향 전환, 플립(Flip) )

좌우반전방법

if (Input.GetMouseButtonDown(0)) //외부입력장치들의 정보를 담고있는 Input
{
    direction *= -1;
    renderer.flipX = !renderer.flipX;
}

 

마우스 이벤트가 발생(마우스 왼쪽 버튼 클릭)했을 경우

 

direction *=-1 을 했을 경우

 

direction에 -1을 곱해줌으로써 캐릭터의 방향을 전환해준다. 

 

direction값이 -0.05f(왼쪽 방향)이면 0.05f(오른쪽방향)으로 전환

direction값이 0.05f(오른쪽 방향)이면 -0.05f(왼쪽방향)으로 전환


renderer.flipX = !renderer.flipX 를 했을 경우 

 

renderer.flipX를 통해 캐릭터이미지를 좌우반전 시켜줄 수 있다. 

renderer.flipX는 bool형으로, !을 붙여줌으로써 가지고 있는 값의 반대 값(true면 false, false면 true)으로 전환해준다.

 

renderer.flipX값이 true(왼쪽방향)이면 false(오른쪽방향)으로 전환

renderer.flipX값이 true(왼쪽방향)이면 false(오른쪽방향)으로 전환

 

마우스 클릭 함수

Input.GetMouseButtonDown은 마우스 버튼을 클릭했을 때 true값을 반환한다.

괄호 안 숫자에 따라 마우스 클릭 값이 다르다.

( 0: 마우스 왼쪽, 1: 마우스 오른쪽, 2: 마우스 가운데(휠) )

 

마우스 이벤트 함수

GetMouseButton(int button) 마우스 버튼을 클릭하고 있을 경우(클릭하는 동안) 발생
GetMouseButtonDown(int button) 마우스 버튼을 클릭했을 경우 한번 발생
GetMouseButton 마우스 버튼을 놓았을 경우 한번 발생

 

이렇게 하면 마우스 왼쪽 버튼을 클릭했을 때 캐릭터가 좌우방향으로 반전되어 움직인다!

전체코드
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;   // 다른기기 속도 맞춰줌
        renderer = GetComponent<SpriteRenderer>(); // Inspector의 SpriteRenderer를 가져옴	 
    }

    // Update is called once per frame
    void Update()
    {
        // 마우스 클릭 했을시
        if (Input.GetMouseButtonDown(0)) 
        {
            direction *= -1;    // 방향반전 
            renderer.flipX = !renderer.flipX; // rendere의 flipX값을 반전(이미지 좌우 반전)
        }
        // 오른쪽벽에 닿으면 
        if (transform.position.x > 2.6f) 
        {
            renderer.flipX = true;  // 이미지반전(flipx 체크)
            direction = -0.05f; // 왼쪽으로 출발
        }
        // 왼쪽벽에 닿으면 
        if (transform.position.x< -2.6f) 
        {
            renderer.flipX = false; // 이미지 반전(flipx 체크 품) 
            direction = 0.05f;  // 오른쪽으로 출발
        }

        transform.position += Vector3.right * direction;
    }
}

 

클릭클릭클릭클릭

 

 

728x90