2016-02-02 2 views
1

Я пытаюсь сделать игру для Android, где у вас есть кнопки и удерживайте кнопки для перемещения и подъема до упора. Однако я не мог заставить его работать на Android, потому что OnMouseDown и OnMouseUp работают только на ПК. Есть ли способ сделать это в Android? Вот мой код:mouseDown и mouseUp для некоторых объектов в android в единстве

using UnityEngine; 
using System.Collections; 

public class buttonRight : MonoBehaviour { 
    public Rigidbody player; 
    public float speed; 
    private bool clicking; 
    void OnMouseDown() 
    { 
     Debug.Log("click"); 
     clicking = true; 
     Vector3 movement = new Vector3(1.0f, 0.0f, 0.0f); 
     if (clicking == true) 
      player.velocity = movement * speed; 
    } 
    void OnMouseUp() 
    { 
     Debug.Log("stop click"); 
     clicking = false; 
     Vector3 movement = new Vector3(0.0f, 0.0f, 0.0f); 
     player.velocity = movement * 0; 
    } 
} 
+0

Пожалуйста, поставить некоторые усилия в поиске в Интернете, во-первых, она полна ресурсов вам нужно. Посмотрите на [docs of Input Class] (http://docs.unity3d.com/ScriptReference/Input.html), нажмите CTRL + F, введите «** touch **» и прочитайте каждую выделенную ссылку. –

+2

«OnMouseDown и OnMouseUp работает только для ПК» - это неправда, он должен работать и на устройстве. Unity3D engine преобразует OnMouseUp и т. Д., Который также будет вызываться на соответствующей сенсорной фазе. –

+0

Возможный дубликат функции [only3d OnMouseDown] (http://stackoverflow.com/questions/23720531/unity3d-onmousedown-function) – Fattie

ответ

1

A тысяча раз вопрос. Ну, ответ OnMouseDown и OnMouseUp выполняются только один раз, и вы пытаетесь их использовать, так как OnMouseDown выполняет за кадр.

Вы можете сделать что-то подобное,

Vector3 movement = new Vector3 (1.0f, 0.0f, 0.0f); 
bool clicking = false; 

void Update() 
{ 
    if (clicking == true) 
     _rb.velocity = movement * 5; 
    else 
     _rb.velocity = movement * 0; 
} 

void OnMouseDown() 
{ 
    Debug.Log ("click"); 
    clicking = true; 

} 

void OnMouseUp() 
{ 
    Debug.Log ("stop click"); 
    clicking = false; 

} 
+0

увлекательный, спасибо. upvoted! – Fattie

+0

@ JoeBlow Спасибо, сэр .... –