2014-07-15 2 views
0

Je suis nouveau à l'unité .. Je suis confronté à un problème avec un objet déplacé. J'attribue une vélocité au gameObject mais quand il atteint une position spécifique (23,14, -750), l'objet gameobject se fige. Je ne peux pas savoir pourquoi. Parfois, l'objet continue de bouger et d'autres fois il s'arrête soudainement. Qu'est-ce qui ne va pas? Mercirigidbody.velocity geler soudainement

{ 
      if (transform.localPosition.z <= -760) { 
        gameObject.SetActive (false); 
      } 
      gameObject.rigidbody.velocity = new Vector3 (0, 0, -speed); 

    } 
+0

Qu'est-ce que vous essayez d'atteindre exactement? – Mad

+0

Je ne veux pas que l'objet se bloque. Je veux juste que ça continue. Mais parfois, il se fige à une position spécifique –

+0

Alors pourquoi définissez-vous l'objet inactif dans la condition ci-dessus? – Mad

Répondre

2

Si vous définissez un objet inactif, il « geler »:

if (transform.localPosition.z <= -760) { 
    gameObject.SetActive (false); 
} 

Je ne sais pas ce que vous attendez SetActive (false) à faire, mais il a le résultat d'arrêter toute logique y compris les mises à jour de position et la collision pour l'objet de jeu particulier.

+0

C'est à droite, mais j'appelle le SetActive lorsque j'atteins 760. mais mon objet est en train de geler avant d'atteindre cette valeur. Sa congélation à 750. –

+1

Comment vérifiez-vous la position? Si vous vous connectez dans Update par exemple, il se peut qu'il n'effectue tout simplement pas la méthode Update après son arrêt, de sorte que le dernier journal restera 750. Il est assez proche pour supposer que l'objet n'est plus actif. Vous souhaiterez peut-être l'enregistrer lorsque la ligne SetActive est exécutée. – LearnCocos2D

+0

réellement cette syntaxe est dans la méthode de mise à jour. Tu penses que c'est le problème? –

0

Ne désactivez pas votre objet. Sauvegardez votre position initiale dans Vector3.

Vector3 initPosition = gameObject.rigidbody.position; 

et définir cette valeur dans votre état

if (transform.localPosition.z <= -760) { 
gameObject.rigidbody.position = initPosition; 
}