Kegunaan fungsi dari WorldToScreenPoint

Hallo,

Hari ini saya akan membahas tentang WorldToScreenPoint. WorldToScreenPoint adalah salah satu fungsi dari camera yang menampilkan posisi dari “WORLD SPACE” kedalam “SCREEN SPACE”

Screen space position yang ditampilan dalam unity berbeda dengan world space game position. Game space / screen space menampilkan pada ukuran pixel, dan world space menampilkan pada ukuran vector, sehingga untuk mengetahui sebuah object berapa pada posisi pixel kita membutuhkan fungsi di atas

oke kita lakukan percobaan awal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using UnityEngine;
using System.Collections;

public class posisiMouse : MonoBehaviour {

private Camera thisCamera;
// Use this for initialization
void Start () {
thisCamera = this.GetComponent<Camera> ();
}

// Update is called once per frame
void Update () {
//Vector3 screenPos = thisCamera.WorldToScreenPoint(Input.mousePosition);
Debug.Log (Input.mousePosition);
}
}

screenshoot gambar 1

screenshoot gambar 2

pada code diatas saya membuat menampilkan posisi mouse dalam ukuran pixel, dan pada gambar 1 posisi mouse adalah x = 323.1, y = 276 dan z= 0. Sedangkan pada gambar 2 posisi mouse saya x = 9.1, y = 1.0, z = 0.0 . Posisi 0,0 pada Screenspace terletak pada bawah kiri.

Walaupun code diatas belum menggunakan fungsi WorldToScreenPoint, tetapi kita bisa melihat bahwa yang ditampilkan dari Input.mousePosition adalah posisi pixel dari screen space.

Oke sekarang kita lanjut pada percobaan 2 disini saya akan meletakan box pada agak sedikit kekanan dari posisi camera, dan kita akan mencoba mengetahui posisi dari box pada world space dan screen space.

SSposcube

pada gambar diatas posisi box adalah x = 3.44, y = 0.02, z = 1 dan disampingnya adalah screen space dan box terlihat sedikit kekanan, dan untuk mengetahui dimana posisi box tersebut, saya membuat simple script untuk memperlihatkan posisi box.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using UnityEngine;
using System.Collections;

public class boxToScreen : MonoBehaviour {

public GameObject kotak;
private Camera thisCamera;
// Use this for initialization
void Start () {
thisCamera = this.GetComponent<Camera> ();
}

// Update is called once per frame
void Update () {
Vector3 screenPos = thisCamera.WorldToScreenPoint(kotak.transform.position);
Debug.Log ("Mouse pos = " +Input.mousePosition+ " dan box pos = "+screenPos);
}
}

Setelah selesai jalankan test unity.

SS-unityscreen

Dari percobaan diatas kita mengetahui bahwa posisi box tersebut pada Screen Space berada pada (575.0, 294.2, 11.0). Disini kita sudah bisa melihat perbedaan yang sangat jelas sekali. semoga dari percobaan simple diatas bisa memberikan gambaran fungsi cari Camera.WorldToScreenPoint. Untuk mendownload unitypackage dari tutorial diatas silahkan klik link ini (link dari google drive saya)

Next tutorial saya akan membahas kebalikan dari ini, yaitu ScreenToWorldPoint.

cheers 😀

refrensi : https://docs.unity3d.com/ScriptReference/Camera.WorldToScreenPoint.html