Страница 1 из 1

Реализация смены текстуры при нажатии на куб

СообщениеДобавлено: 10 дек 2011, 22:17
iXerox
Я использую скрипт:
Синтаксис:
Используется javascript
var iS = 0;
var Texture1 : Texture;
var Texture2 : Texture;
var Texture3 : Texture;

function Update()
{
                if(iS==0)
                {
                renderer.material.mainTexture = Texture1;
                }
}

function OnMouseUp()
{
                if(iS==0)
                {
                                renderer.material.mainTexture = Texture2;
                                iS = 1;
                }
                else if(iS==1)
                {
                                renderer.material.mainTexture = Texture3;              
                                iS = 2;
                }
                else if(iS==2)
                {

                                iS = 0;
                }
}
 

Он меняет текстуру, когда я жму куб к которому присоединен данный скрипт. Теперь вопрос: Как сделать, чтобы текстура на кубе "В" менялась на при нажатии на куб "А".

Re: Реализация смены текстуры при нажатии на куб

СообщениеДобавлено: 11 дек 2011, 01:31
Левш@
Это твой код после оптимизации.
Синтаксис:
Используется javascript
var texture : Texture[];
private var is = 0;
function OnMouseUp ()  {
            renderer.material.mainTexture = texture[is];
            is += 1;
}

А найти в скрипте нужный обьект и его материал для изменение значений можно так:
Синтаксис:
Используется javascript
objMat = GameObject.Find("Имя обьекта").renderer.material.mainTexture;

Из чего следует:
Синтаксис:
Используется javascript
var texture : Texture[];
private var is = 0;
function OnMouseUp ()  {
            GameObject.Find("Имя обьекта").renderer.material.mainTexture = texture[is];
            is += 1;
}

:)

Re: Реализация смены текстуры при нажатии на куб

СообщениеДобавлено: 11 дек 2011, 15:17
iXerox
Спасибо, а я все текстуры вручную прописывал...
Еще вопрос:
Есть скрипт:
Синтаксис:
Используется javascript

var step = 0;
var ScoreID0 = 0;
var ScoreID1 = 0;
var ScoreGUIP1 : GUIText;
var ScoreID = 0;
var Texture0 : Texture;
var Texture1 : Texture;
var Texture2 : Texture;
var ScoreID2 = 0;
var cube : GameObject;

function Start ()
{  
  step = 0;
   cube.renderer.material.mainTexture = Texture0;
    yield new WaitForSeconds (3);
  step = 1;
   cube.renderer.material.mainTexture = Texture1;
    yield new WaitForSeconds (3);
  step = 2;
   cube.renderer.material.mainTexture = Texture2;
    yield new WaitForSeconds (3);
   
}

function OnMouseUp()
{
   if(step == 0)
   {
       ScoreID0 = ScoreID + 1;
   ScoreGUIP1.text = "" + ScoreID0;

   }
   else if(step == 1)
   {
       ScoreID1 = ScoreID0 + 1;
   ScoreGUIP1.text = "" + ScoreID1;

   }
   else if(step == 2)
   {
       ScoreID2 = ScoreID1 + 1;
   ScoreGUIP1.text = "" + ScoreID2;     
   }
}
 


Это вариация от старого кода. Теперь суть.
Данный скрипт меняет счет(Score) в зависимости от текстуры. Скрипт прикрепил к кубу. Текстура меняется на другом кубе. Есть я делаю:
Текстура сменилась=>Жму куб; Текстура сменилась=>Жму куб и т.д. то все нормально, но если я:
Текстура сменилась =>Жму куб; Текстура сменилась=> Жду, ничего не делаю; Текстура сменилась=>Жму куб.
После последнего, значение Score обнуляется и к нему прибавляется . То есть получается 0+1=1.
Вопрос как этого избежать. Я сделал так т.к. хотел, чтобы во время одной текстуры нельзя было много раз нажать на куб и увеличить счет несколько раз.

Помогите пожалуйста как решить данную проблему. Может быть вообще надо использовать другой способ, если да, то какой?
Заранее спасибо.

Re: Реализация смены текстуры при нажатии на куб

СообщениеДобавлено: 11 дек 2011, 21:28
iXerox
Все, мне уже помогли на другом форуме.