본문 바로가기
유니티/인생유니티교과서

07/19

by SUGI_ 2022. 7. 19.

DestroyZone Player가 못나가게 하기 

 

1. 충돌체를 두고 벗어나지 못하게 -> 덜덜떨리는 현상때문에 안됨 Player + (rigidbody)

 

2. 떨어졌을때 위치 체크 후 벗어나지 않게 x 축 -3~3 동안에 

// PlayerMove
 void Update()
 {
       Vector3 myPos = transform.position;
       myPos += dir * speed * Time.deltaTime;

        // 만약 플레이어 x 위치가 -4.3 보다 작을 때, +4.3보다 클 때 화면을 벗어나지 않도록 하고 싶다

        // 플레이어 x 위치 

        // x 값이 -4.3 보다 작다면
        if (myPos.x < -4.3)
        {
            //x 값을 -4.3으로 하자
            myPos.x = -4.3f;
        }
        else if (myPos.x > 4.3f)
        {
            // 만약 x의 위치가 +4.3 보다 클 때
            // x 값을 4.3으로 하자
            myPos.x = 4.3f;
        }
        transform.position = myPos;
 }

 

3. 동적으로 화면 해상도를 찾아서 

[유니티] 게임 오브젝트가 화면 밖으로 못 나가게 하기

 

viewportToViewportPoint

 

3-1. World 

3-2. Screen

 

같은 공간으로 가져와야 한다.

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

// 사용자 입력에 따라 상하좌우로 이동하고 싶다.
// 필요속성 : 이동속도
public class PlayerMove : MonoBehaviour
{
    // 필요속성 : 이동속도
    float speed = 5;

    float width;

    // Start is called before the first frame update
    void Start()
    {
        float height = Camera.main.orthographicSize * 2;
        float meterPerPixel = height / Screen.height;
        width = Screen.width * meterPerPixel * 0.5f - 0.5f;
    }

    // Update is called once per frame
    void Update()
    {

        // 사용자 입력에 따라 상하좌우로 이동하고 싶다.
        // 1. 사용자의 입력에 따라
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        // 2. 방향이 필요
        Vector3 dir = Vector3.right * h + Vector3.up * v;
        dir.Normalize();
        // 3. 이동하고 싶다.
        // P = P0 + vt
        Vector3 myPos = transform.position;
        myPos += dir * speed * Time.deltaTime;

        // 만약 플레이어 x 위치가 -4.3 보다 작을 때, +4.3보다 클 때 화면을 벗어나지 않도록 하고 싶다

        // 플레이어 x 위치 
        /*
        // x 값이 -4.3 보다 작다면
        if (myPos.x < -4.3)
        {
            //x 값을 -4.3으로 하자
            myPos.x = -4.3f;
        }
        else if (myPos.x > 4.3f)
        {
            // 만약 x의 위치가 +4.3 보다 클 때
            // x 값을 4.3으로 하자
            myPos.x = 4.3f;
        }
        transform.position = myPos;
        */

        myPos.x = Mathf.Clamp(myPos.x, -width, width);
        transform.position = myPos;
    }

}

 

씬 전환

이벤트 트리거

GameManager

 

    // 필요속성 : 현재상태, Ready, Start, Playing, GameOver
    //저장은 하지만 노출되지 않는다
    //[HideInInspector] 
    [System.NonSerialized]
    public int m_State;

 

CS -> 컴파일 IL dLL 보안이슈 (저장하고 불러온다.)

apk 디컴파일 했을때 소스코드 다 볼 수 있음

그래서 보안이슈가 생김 .(변수랑 함수를 암호화 - Offuscater?)

728x90

'유니티 > 인생유니티교과서' 카테고리의 다른 글

07/26  (0) 2022.07.26
07/20  (0) 2022.07.20
3.1 프로토타입 버전 제작  (0) 2022.07.19
07/15  (0) 2022.07.15
34-40 총알쏘는 Enemy 만들기  (0) 2022.07.14