Short Cake
8PM - Animal Crossing Wild World

사생활 보호 설정

https://gamjia.tistory.com

Mini Rooms

  • 내 미니룸
  • 미니미설정
  • 미니룸설정
  • 답글수 [0]

What Friends Say

한마디로 표현해봐~

1촌평 관리

[Day 14] Color Fill Tutorial 3

GamJia 2024. 11. 20. 21:12

오블완 챌린지 14일차


 

알리에서 산 원피스 버리고

지그재그에서 이쁜 원피스를

사서 신난 GamJia 입니다

 

어제 강의에 이어서
Color Fill을 만들어 보겠습니다

 


 

오늘은 Player 작업을 해보도록 하겠습니다

세팅은 이미지를 참고해주세요

특이사항이라면 Rigidbody Type

Dynamic이라는 것 입니다

 


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

namespace ColorFill
{
    [AddComponentMenu("Color Fill/Color Fill Player")]
    public class Player : MonoBehaviour
    {
        private float moveSpeed = 0f; 
        private Vector2 moveDirection; // 이동 방향
        private Vector2 startMousePosition; // 마우스 시작 위치
        private bool isMoving = false; // 이동 중인지 여부

        private void Update()
        {
            
            // 마우스 클릭 시 (드래그 시작)
            if (Input.GetMouseButtonDown(0)&&!isMoving)
            {
                startMousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); 
                isMoving = true; 
                moveSpeed=7;
            }

            if (isMoving)
            {
                Vector2 currentMousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); 

                // X 또는 Y 방향으로만 이동 (좌우/상하)
                if (Mathf.Abs(currentMousePosition.x - startMousePosition.x) > Mathf.Abs(currentMousePosition.y - startMousePosition.y))
                {
                    // X 방향으로 이동 (왼쪽/오른쪽)
                    if (currentMousePosition.x > startMousePosition.x && moveDirection != Vector2.right)
                    {
                        moveDirection = Vector2.right; // 오른쪽으로 이동
                    }
                    else if (currentMousePosition.x < startMousePosition.x && moveDirection != Vector2.left)
                    {
                        moveDirection = Vector2.left; // 왼쪽으로 이동
                    }
                }
                else
                {
                    // Y 방향으로 이동 (위/아래)
                    if (currentMousePosition.y > startMousePosition.y && moveDirection != Vector2.up)
                    {
                        moveDirection = Vector2.up; // 위쪽으로 이동
                    }
                    else if (currentMousePosition.y < startMousePosition.y && moveDirection != Vector2.down)
                    {
                        moveDirection = Vector2.down; // 아래쪽으로 이동
                    }
                }

                // 계속 이동 (마우스를 떼도 계속 이동)
                
            }

            transform.Translate(moveDirection * moveSpeed * Time.deltaTime);
        }

        // 충돌 시 이동 멈추기
        private void OnCollisionEnter2D(Collision2D collision)
        {
            // 충돌한 경우 이동 멈추기
            if ((moveDirection == Vector2.right && collision.transform.position.x > transform.position.x + 0.9f)
            || (moveDirection == Vector2.left && collision.transform.position.x+0.9f < transform.position.x)
            || (moveDirection == Vector2.up && collision.transform.position.y> transform.position.y+0.9f)
            || (moveDirection == Vector2.down && collision.transform.position.y+0.9f < transform.position.y))
            {
                isMoving = false; // 이동 멈추기
                moveSpeed = 0f;   // 이동 속도 0으로 설정
            }
            
        }
    }
}

 

Player 코드를 하나 만들어주겠습니다

 

OnCollision을 보면 if 조건이

굉장히 긴데요 사실 길기만 길지

내용은 크게 어렵지 않습니다

 


 

저 코드의 내용은 제가 마우스를

드래그 한 방향으로 캐릭터를

일직선으로 이동 시키는 내용입니다

 

7의 속도로 이동하게 되는데

벽에 부딪힐 경우 속도를

0으로 감소 시켜야 합니다

 

만약에 저 조건이 없을 경우

이동하면서 벽에 닿아 일직선으로 못 가고

바로 멈춰버리게 됩니다

 


 

저장 후 실행해보니

캐릭터가 Direction 방향에 있는

Collider와 충돌할 때만

멈추는 모습입니다

 


 


오늘은 여기까지 하고

GitHub에 Commit하는걸로

마무리 하겠습니다!

이 게임은 이제 저기에 색깔 바꾸는

기능만 넣어주면 사실상

거의 완성입니다..ㅋㅋ

 

 

감사합니다!!
 


 

'Challenge' 카테고리의 다른 글

[Day 16] Color Fill Tutorial 5  (0) 2024.11.22
[Day 15] Color Fill Tutorial 4  (0) 2024.11.21
[Day 13] Color Fill Tutorial 2  (0) 2024.11.19
[Day 12] Color Fill Tutorial 1  (0) 2024.11.18
[Day 11] Save The Dog Tutorial 5  (0) 2024.11.17