2024년 1월 17일 수요일

Unity - 오브젝트 크기를 화면 해상도로 맞추기

 


사진에서 플레이 버튼을 누르게 되면

가로 방향의 Collider는 화면 밖에 있기 때문에

화면 밖으로 굴러가게 된다.

이를 방지하려면 어떻게 해야 할까



Collider를 위치를 움직여서 화면 밖으로 나가지 못하게 하면 된다.

하지만 모바일 게임 같은 경우 기종에 따라 화면 크기가 제 각각이라

현재 해상도를 가져와서 이를 World Space로 변환 해주고 가로 길이 만큼

위치를 변경해주면 된다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using UnityEngine;
 
class WallCollisions : MonoBehaviour
{
    [Header("Wall Collisions")]
    public GameObject m_left;
    public GameObject m_right;
 
    private float m_camSize = 10.0f;
 
    //테스트용
    private void Start()
    {
        SetWalls();
    }
 
    public void SetOrthographicSize(Camera camera)
    {
        m_camSize = camera.orthographicSize;
    }
 
    //사방면의 벽을 화면 크기에 맞춰서 옮기는 함수
    public void SetWalls()
    {
        float aspect = (float)Screen.width / Screen.height;
        float worldWidth = m_camSize * aspect;
 
        m_left.transform.position = new Vector3(-worldWidth, 00);
        m_right.transform.position = new Vector3(worldWidth, 00);
    }
}
 
cs





아이패드 아이폰 둘다 잘 맞춰진다. 
 



댓글 없음:

댓글 쓰기

c++ thread.h

 c++에서 쓰레드 돌릴려면 thread.h 헤더를 쓰면 되는데 이 친구는 쓰레드가 아직 실행 중인지, 아니면 강제 종료하거나 하는 함수가 없어서 조금 아쉬운 애다. std::thread 는 로컬 변수로 선언하든 new 동적 할당을 하든 start 함...