Requirement : Sudah memahami basic unity
Buatlah material diffuse untuk masing-masing dari 3 texture diatas,
atau cara mudahnya adalah buat 3 quad dalam scene kemudian drag and drop
texture yang sudah diimport ke masing-masing quad
Hubungkan semua quad menjadi 1 bentuk cube 6 face seperti gambar
dibawah, dan masukkan semua ke sebuat gameobject parent dengan nama DirtCubes,
kemudian jadikan sebuat prefab, rename masing-masing facenya, perhatikan arah
kompas utama, pastikan bahwa hadapannya adalah x ke kanan, z ke depan dan y ke
atas.
Perbanyak instance
dari Dirt Cube hingga membentuk lantai yang cukup.
Import package
character controller untuk menggunakan FirstPerson mode.
Berikan sebuah
script baru dengan nama PlayerController pada game object
FirstPersonController, dengan isi sebagai berikut
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
{
RaycastHit hit;
Transform cam;
public GameObject dirtCube;
public GameObject dirtCubeSample;
void Awake()
{
cam = Camera.main.transform;
}
void Start()
{
//untuk
sebelum versi 5.0.1p2
//Screen.showCursor
= false;
//setelah
versi 5.0.1p2
Cursor.visible
= false;
}
void Update()
{
Vector3 addedDistance
= Vector3.zero;
if (Physics.Raycast(cam.position, cam.forward, out hit, 500f))
{
if (hit.collider.gameObject.name == "Top")
{
addedDistance = new Vector3(0, 1, 0);
dirtCubeSample.gameObject.transform.position = hit.collider.transform.parent.position + addedDistance;
}
if (hit.collider.gameObject.name == "Bottom")
{
addedDistance = new Vector3(0, -1, 0);
dirtCubeSample.gameObject.transform.position = hit.collider.transform.parent.position + addedDistance;
}
if (hit.collider.gameObject.name == "Left")
{
addedDistance = new Vector3(-1, 0, 0);
dirtCubeSample.gameObject.transform.position = hit.collider.transform.parent.position + addedDistance;
}
if (hit.collider.gameObject.name == "Right")
{
addedDistance = new Vector3(1, 0, 0);
dirtCubeSample.gameObject.transform.position = hit.collider.transform.parent.position + addedDistance;
}
if (hit.collider.gameObject.name == "Front")
{
addedDistance = new Vector3(0, 0, -1);
dirtCubeSample.gameObject.transform.position = hit.collider.transform.parent.position + addedDistance;
}
if (hit.collider.gameObject.name == "Back")
{
addedDistance = new Vector3(0, 0, 1);
dirtCubeSample.gameObject.transform.position = hit.collider.transform.parent.position + addedDistance;
}
}
if (Input.GetKeyDown(KeyCode.Mouse0))
{
if (addedDistance
!= Vector3.zero)
GameObject.Instantiate(dirtCube, hit.collider.transform.parent.position + addedDistance, Quaternion.identity);
}
}
}
|
Variable dirtCube
mengambil object untuk inisialisasi dari prefab cube
Variable
dirtCubeSample mengambil object dari salah satu cube pada scene, dan collider
khusus pada 1 object ini di nonaktifkan.
No comments:
Post a Comment