2015-09-21 6 views
0

Je veux que ma commande OnMouseDown ne fonctionne que lorsque le joueur appuie sur un objet dans la partie. Pour l'instant, le joueur peut appuyer n'importe où et la minuterie commencera. Y a-t-il un moyen de faire démarrer la minuterie seulement quand ils cliquent et maintiennent un objet? Pour vous donner un peu de contexte, je veux qu'un objet devienne inactif lorsque le joueur clique dessus et le maintient.Cliquez et maintenez OnMouseDown Unity3D

Voici mon code à ce jour:

function Update() 
{ 
    if (Input.GetMouseButton(0)) 
    { 
     timer += Time.deltaTime; 
    } 
    if (Input.GetMouseButtonUp(0)) 
    { 
     timer = 0; 
    } 
    if(timer > 1) 
    { 
     gameObject.SetActive(false);  
    } 
} 
+0

double possible de [l'unité 5: Comment puis-je détecter une touche sur un bouton et un objet personnalisés] (http://stackoverflow.com/questions/32329959/unity-5-how-can-i-detect-a-touch-on-a-custom-button-and-object) – maksymiuk

Répondre

0

SOLUTION: J'ai utilisé un raycast afin de le faire:

var ray: Ray = Camera.main.ScreenPointToRay(Input.mousePosition); 
var hit : RaycastHit; 

if (Input.GetMouseButton(0) && coll.Raycast(ray,hit,100)) 
{ 
timer += Time.deltaTime; 
} 
if (Input.GetMouseButtonUp(0)) 
{ 
    timer = 0; 
}