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

OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 23 ноя 2011, 00:57
iMoonlightAndre
Сейчас делаю тестовый проект в [unity 3D] . Суть:
Есть четыре куб(Cube), есть две сцены, требуется сделать переход с первой сцены на вторую. К кубам прикреплены скрипты(их взял с этого форума):

Первый скрипт( (js) ):
Синтаксис:
Используется javascript
function Update()
{
        if(Input.touchCount > 360)
        {
                var touch: Touch = Input.touches[0];
                if(touch.phase == TouchPhase.Began && guiTexture.HitTest(touch.position))
                {
                      Application.LoadLevel(1);
                     
                }
        }
}
 


-----

Второй скрипт( (js) ):
Синтаксис:
Используется javascript
var isTwoBtn = false;

function OnMouseUp()
{
        if(isTwoBtn)
        {
                Application.LoadLevel(1);
        }
}
 


-----

Третий скрипт( (js) ):
Синтаксис:
Используется javascript
var isTwoBtn = false;

function OnTouchDown()
{
        if(isTwoBtn)
        {
                Application.LoadLevel(1);
        }
}
 


-----

Ни один из скриптов не помогает. Сидел весь вечер [curved_hands], переделывал заново, перекомпилировал и т.д.. Может ли кто помочь решить данную проблему?(могу выложить сам проект)


P.S.: Как сделать(в iOS приложении), чтобы при клике на куб изменялся его цвет. Вариант, который я использовал для PC\Mac на iOS выдает ошибку.

Re: OnMouseUp в iOS

СообщениеДобавлено: 23 ноя 2011, 01:17
DbIMok
если писать функции наугад, не читая... ничего хорошего не получится. например:
iMoonlightAndre писал(а):if(Input.touchCount > 360)

а если (вдруг!) количество касаний меньше 360?
iMoonlightAndre писал(а):OnMouseUp()

IMPORTANT: This function has no effect on iPhone.

вы точно туда мышку подключали?
iMoonlightAndre писал(а):function OnTouchDown()

эта функция не сработает, потому что движок про нее не знает

попробуйте начать с прохождения туториала

Re: OnMouseUp в iOS

СообщениеДобавлено: 23 ноя 2011, 01:50
iMoonlightAndre
Я вначале пробовал "0", но потом решил попробовать 360, в любом случае "0" тоже не работает.

Re: OnMouseUp в iOS

СообщениеДобавлено: 23 ноя 2011, 01:52
iMoonlightAndre
P.S.: А если скомпилить приложение под Android и подключить к планшету с мышкой OnMouseUp будет действовать?

Re: OnMouseUp в iOS

СообщениеДобавлено: 23 ноя 2011, 02:38
DbIMok
по поводу Input в Android. с 0 там в следующее условие упиралось. насчет мышки не знаю, не пробовал.

Re: OnMouseUp в iOS

СообщениеДобавлено: 23 ноя 2011, 11:10
pestantium
Синтаксис:
Используется csharp
public GameObject buttonPlay; //Ссылка на 3д куб в сцене на которой висит колайдер
void Update()
{
if (Input.GetMouseButtonUp(0))
{
 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 RaycastHit hit;
 if (Physics.Raycast(ray, out hit))
  {
  linkTools.input.Reset();
  if (hit.collider.gameObject == buttonPlay)
   Application.LoadLevel(1);
  }
}
}

Re: OnMouseUp в iOS

СообщениеДобавлено: 23 ноя 2011, 12:31
iMoonlightAndre
pestantium, спасибо, а я как раз только с мануалом по Penelope разобрался и понял, как сделать аналогичное на (js) . Но за скрипт спс большое.

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 00:47
iXerox
С C# не работает. У меня вопрос, кстати, по этому поводу. У меня скрипт:
Синтаксис:
Используется javascript

function Update()
{
  var count = Input.touchCount;
  for (var i: int = 0; i < count; i++)
  {
    var touch : Touch = Input.GetTouch(i);
       Тут действие, которое должно произойти

        }
}
 


Как сделать так, чтобы действие происходило при нажатии на 3D Text. Потом что, тот скрипт, что я описал выше реагирует на любое касание экрана. На PC я вводил переменную:

Синтаксис:
Используется javascript
var isBtn = false;
 


А дальше:
Синтаксис:
Используется javascript
function OnMouseUp()
{
        if(isBtn)
        {
        Тут действие, которое должно произойти
        }
}
 


Как сделать это в iOS\Android?

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 10:47
pestantium
Вешай колайдер на 3д текст, используй скрипт что я приводил.

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 15:05
iXerox
Я дал 3D Text'у имя buttonPlay. Присоединил в тексту коллайдер. Вот:
screen-capture-3.png


Поставил скрипт:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public GameObject buttonPlay; //3D Text назвал buttonPlay, но Unity3D выдает ошибку на этой строчке.

void Update()
{
if (Input.GetMouseButtonUp(0))
{
 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
 RaycastHit hit;
 if (Physics.Raycast(ray, out hit))
  {
  linkTools.input.Reset();
  if (hit.collider.gameObject == buttonPlay)
                               
   Application.LoadLevel(1);
  }
}
}
 


Но скрипт выдает ошибку(скрин лога выше). В чем проблема?

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 16:17
iXerox
У меня Unity 3.4.2f3

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 18:06
seaman
Предъявленный скрипт не C#. В C# все может быть только в классе. У Вас вообще нет класса!

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 18:15
iXerox
В плане?
Что ли на ввести:
Синтаксис:
Используется csharp
public class GameObject buttonPlay;
 

???

Я в точности копировал скрипт pestantium'а.

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 18:17
iXerox
Я не знаком с C#'ом. Мне может кто-нибудь как правильно использовать этот скрипт или подсказать, как реализовать это на JS.

Re: OnMouseUp в iOS [РЕШЕНО, ЯП C#]

СообщениеДобавлено: 24 ноя 2011, 18:36
seaman
Ну видимо так.
Синтаксис:
Используется csharp
using UnityEngine;

public class MyClass
{
    public GameObject buttonPlay;

    void Update()
    {
        if (Input.GetMouseButtonUp(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                linkTools.input.Reset();
                if (hit.collider.gameObject == buttonPlay)            
                     Application.LoadLevel(1);
            }
       }
    }
 }