ПОМОГИТЕ С 2 СКРИПТАМИ!!!!! - Форум - Все для Unity3d

Все для Unity3d> ПОМОГИТЕ С 2 СКРИПТАМИ!!!!! - Форум>
Страница 1 из 11
Форум » Unity » Вопросы » ПОМОГИТЕ С 2 СКРИПТАМИ!!!!! (У меня есть скрипт который ставит блоки (кубы). И есть его к)
ПОМОГИТЕ С 2 СКРИПТАМИ!!!!!
23gjnfДата: Понедельник, 16.06.2014, 20:37 | Сообщение # 1
Новый писатель
Группа: Пользователи
Статус: Offline
У меня есть скрипт который ставит блоки (кубы). И есть его копия но она отличается в материалы и физикой падения короче там стоит бинд на кнопки B и N!!!!! Нужно чтобы когда нажимаю на B отключался скрипт на N и когда нажимаю N он включался и отключал B!!!!! И на оборот.

Код
1 скрипт:

using UnityEngine;
using System.Collections;
public class MineCs : MonoBehaviour {

public GameObject block;
public Material Sand;
public Material Snow;
     
// 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.N))
   {
    Screen.showCursor = true;
    
    GUILayout.BeginVertical();
    GUILayout.Label(block.renderer.sharedMaterial.name + "");
    
    if(GUILayout.Button("Sand"))
    {
         block.renderer.sharedMaterial = Sand;
    }
    if(GUILayout.Button("Snow"))
    {
         block.renderer.sharedMaterial = Snow;
    }
    GUILayout.EndVertical();
   }
   else
   {
    Screen.showCursor = false;
   }
}
}

2 Скрипт:

using UnityEngine;
using System.Collections;
public class MineC : MonoBehaviour {

public GameObject block;
public Material Grass;
public Material Land;
public Material Sand;
public Material Water;
public Material Stone;
public Material BrickWord;
public Material Wood;
public Material BookCase;
public Material Iron;
public Material Lava;
public Material Snow;
public Material Lamp;
public Material StoneWork;
public Material StoneMoss;
public Material RustyIron;
     
// 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.B))
   {
    Screen.showCursor = true;
    
    GUILayout.BeginVertical();
    GUILayout.Label(block.renderer.sharedMaterial.name + "");
    
    if(GUILayout.Button("Grass"))
    {
         block.renderer.sharedMaterial = Grass;
    }
    if(GUILayout.Button("Land"))
    {
         block.renderer.sharedMaterial = Land;
    }
    if(GUILayout.Button("Water"))
    {
         block.renderer.sharedMaterial = Water;
    }
    if(GUILayout.Button("Sand"))
    {
         block.renderer.sharedMaterial = Sand;
    }
    if(GUILayout.Button("Stone"))
    {
         block.renderer.sharedMaterial = Stone;
    }
    if(GUILayout.Button("Wood"))
    {
         block.renderer.sharedMaterial = Wood;
    }
    if(GUILayout.Button("BookCase"))
    {
         block.renderer.sharedMaterial = BookCase;
    }
    if(GUILayout.Button("Iron"))
    {
         block.renderer.sharedMaterial = Iron;
    }
    if(GUILayout.Button("Lava"))
    {
         block.renderer.sharedMaterial = Lava;
    }
    if(GUILayout.Button("Snow"))
    {
         block.renderer.sharedMaterial = Snow;
    }
    if(GUILayout.Button("Lamp"))
    {
         block.renderer.sharedMaterial = Lamp;
    }
    if(GUILayout.Button("StoneWork"))
    {
         block.renderer.sharedMaterial = StoneWork;
    }
     if(GUILayout.Button("StoneMoss"))
    {
         block.renderer.sharedMaterial = StoneMoss;
    }
    if(GUILayout.Button("RustyIron"))
    {
         block.renderer.sharedMaterial = RustyIron;
    }
    GUILayout.EndVertical();
   }
   else
   {
    Screen.showCursor = false;
   }
}
}

кнопка N отвечает за 1 скрипт а кнопка B за 2 скрипт
Вот Скрипты

P.S. Я уже все методы перепробовал. Может быть надо написать другой скрипт совершенно?

И строчка: if(Input.GetKey(KeyCode.B)) отвечает за кнопку B
А строчка: if(Input.GetKey(KeyCode.N)) отвечает за кнопку N
 
maxim738Дата: Понедельник, 16.06.2014, 21:45 | Сообщение # 2
Новый писатель
Группа: Пользователи
Сообщений: 18
Статус: Offline
Советую начинать с чего полегче , обращаясь каждый раз на форум с такими "вопросам" ты не сделаешь нормальную игру , посмотри
мой пост под этим вопросом http://u3d.at.ua/forum/3-348-1#2105 там ты найдешь некоторые ответы , клон майнкрафта успеешь сделать . А по поводу вопроса создай новый скрипт на JS например и по нажатию той или иной кнопки отключай компонент-скрипт на объекте , на котором висят эти скрипты.Например так можешь :
Код
var obj : Transform; \\объект со скриптами , которые нужно отключить

function Update (){
if(Input.GetKey(KeyCode.B)){
obj.GetComponent("названия скрипта").enabled = false;
}
if(Input.GetKey(KeyCode.N)){
obj.GetComponent("названия скрипта2").enabled = false;
}
}


Скрипты на заказ, помощь в исправлении ошибок ,работа с чужим кодом.В лс,недорого.

Сообщение отредактировал maxim738 - Понедельник, 16.06.2014, 21:51
 
Salavan73Дата: Понедельник, 16.06.2014, 21:51 | Сообщение # 3
Новый писатель
Группа: Заблокированные
Сообщений: 22
Статус: Offline
Можно же еще с помощью переменных сделать
 
23gjnfДата: Понедельник, 16.06.2014, 23:56 | Сообщение # 4
Новый писатель
Группа: Пользователи
Статус: Offline
maxim738,
Ошибку выдаёт можешь помочь -_-
Assets/_Scripts/off_scripts.js(3,1): BCE0044: unexpected char: 0xFEFF.

Добавлено (17.06.2014, 00:56)
---------------------------------------------
maxim738, всё я исправил
было function Update (){ 
стало function Update () {  
1 пробел)

Сообщение отредактировал 23gjnf - Понедельник, 16.06.2014, 23:46
 
maxim738Дата: Вторник, 17.06.2014, 10:31 | Сообщение # 5
Новый писатель
Группа: Пользователи
Сообщений: 18
Статус: Offline
Цитата 23gjnf ()
maxim738, Ошибку выдаёт можешь помочь -_-
Assets/_Scripts/off_scripts.js(3,1): BCE0044: unexpected char: 0xFEFF.
Добавлено (17.06.2014, 00:56)
---------------------------------------------
maxim738, всё я исправил
было function Update (){
стало function Update () {
1 пробел)
Забыл добавить , надо ж чтобы они, когда надо, ещё включались)Вот весь код:

Код
var obj : Transform; \\объект со скриптами , которые нужно отключить   
var vkl1 = true;
var vkl2 = true;

function Update () {   
if(Input.GetKey(KeyCode.B)){   
if(vkl1 == true){
obj.GetComponent("названия скрипта").enabled = false;   
vkl1=false;
}   
}
if(Input.GetKey(KeyCode.N)){   
if(vkl2 == true){
obj.GetComponent("названия скрипта2").enabled = false;   
vkl2 = false;
}   
}
if(Input.GetKey(KeyCode.B)){   
if(vkl1 == false){
obj.GetComponent("названия скрипта").enabled = true;   
vkl1=true;
}   
}
if(Input.GetKey(KeyCode.N)){   
if(vkl2 == false){
obj.GetComponent("названия скрипта2").enabled = true;   
vkl2 = true;
}   
}
}

можно, конечно, было сжать , но и в таком виде будет работать.Кстати скрипт универсальный ко всем компонентам


Скрипты на заказ, помощь в исправлении ошибок ,работа с чужим кодом.В лс,недорого.

Сообщение отредактировал maxim738 - Вторник, 17.06.2014, 10:32
 
666007666Дата: Четверг, 11.09.2014, 18:43 | Сообщение # 6
Новый писатель
Группа: Пользователи
Статус: Offline
А как этот скрипт обозвать надо и какой он:java или csharp?
 
websbkДата: Четверг, 11.09.2014, 19:37 | Сообщение # 7
Новый писатель
Группа: Пользователи
Сообщений: 54
Статус: Offline
Цитата 666007666 ()
А как этот скрипт обозвать надо и какой он:java или csharp?
Обзывай как угодно и учи скриптинг чтоб хотя бы знать чем шарп от js отличается а этот  на js написан
 
Форум » Unity » Вопросы » ПОМОГИТЕ С 2 СКРИПТАМИ!!!!! (У меня есть скрипт который ставит блоки (кубы). И есть его к)
Страница 1 из 11
Поиск:
Свернуть
Развернуть
Необходима авторизация
0
ТОП-5 САЙТА
НОВЫЕ ИГРЫ
ГОРЯЧИЕ ТЕМЫ
СЛУЧАЙНЫЕ ФАЙЛЫ