Чтобы было такое окно в нём кнопки нажимаеш допустим на кнопку "Полатка" и ставиться модель полатки, жмёш "блок" и ставиш блок
в этом скрипте уже есть окно при нажатии кнопки M но меня очень не устраивает то что при нажати кнопки "название блока" просто меняется текстура куба, мне же надо чтобы было такоеже окно но при нажатии кнопки спавнилась другая модель а не менялась текстура!!!
ОЧЕНЬ НУЖНА ВАША ПОМОЩЬ!!!
РЕБЯТ НУ ПОМОГИТЕ ЁЛКИ ПАЛКИ
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class MineCraftController : MonoBehaviour {
public GameObject block;
public Material mat_blue;
public Material mat_red;
// Use this for initialization
void Start () {
Screen.showCursor = false;
}
// Update is called once per frame
void Update () {
Ray ray = Camera.mainCamera.ScreenPointToRay(new Vector3(Screen.width/2,Screen.height/2,0));
RaycastHit hit;
if(Physics.Raycast(ray,out hit,5f) && hit.collider.tag == "Block")
{
if(Input.GetMouseButtonUp(0))
{
Vector3 pos = hit.collider.transform.position;
pos += hit.normal;
Instantiate(block,pos,Quaternion.identity);
}
else if(Input.GetMouseButtonUp(1))
{
DestroyObject(hit.collider.gameObject);
}
}else if(Physics.Raycast(ray,out hit,5f) && hit.collider.name == "Plane")
{
if(Input.GetMouseButtonUp(0))
{
Vector3 pos = hit.point;
pos.y = 0;
pos.x = Mathf.Round(pos.x);
pos.z = Mathf.Round(pos.z);
Instantiate(block,pos,Quaternion.identity);
}
}
}
void OnGUI()
{
if(Input.GetKey(KeyCode.M))
{
Screen.showCursor = true;
GUILayout.BeginVertical();
GUILayout.Label(block.renderer.sharedMaterial.name + "");
if(GUILayout.Button("Blue"))
{
block.renderer.sharedMaterial = mat_blue;
}
if(GUILayout.Button("Red"))
{
block.renderer.sharedMaterial = mat_red;
}
GUILayout.EndVertical();
}
else
{
Screen.showCursor = false;
}
}
}
using System.Collections;
public class MineCraftController : MonoBehaviour {
public GameObject block;
public Material mat_blue;
public Material mat_red;
// Use this for initialization
void Start () {
Screen.showCursor = false;
}
// Update is called once per frame
void Update () {
Ray ray = Camera.mainCamera.ScreenPointToRay(new Vector3(Screen.width/2,Screen.height/2,0));
RaycastHit hit;
if(Physics.Raycast(ray,out hit,5f) && hit.collider.tag == "Block")
{
if(Input.GetMouseButtonUp(0))
{
Vector3 pos = hit.collider.transform.position;
pos += hit.normal;
Instantiate(block,pos,Quaternion.identity);
}
else if(Input.GetMouseButtonUp(1))
{
DestroyObject(hit.collider.gameObject);
}
}else if(Physics.Raycast(ray,out hit,5f) && hit.collider.name == "Plane")
{
if(Input.GetMouseButtonUp(0))
{
Vector3 pos = hit.point;
pos.y = 0;
pos.x = Mathf.Round(pos.x);
pos.z = Mathf.Round(pos.z);
Instantiate(block,pos,Quaternion.identity);
}
}
}
void OnGUI()
{
if(Input.GetKey(KeyCode.M))
{
Screen.showCursor = true;
GUILayout.BeginVertical();
GUILayout.Label(block.renderer.sharedMaterial.name + "");
if(GUILayout.Button("Blue"))
{
block.renderer.sharedMaterial = mat_blue;
}
if(GUILayout.Button("Red"))
{
block.renderer.sharedMaterial = mat_red;
}
GUILayout.EndVertical();
}
else
{
Screen.showCursor = false;
}
}
}