2017-07-14 2 views
0

Je le script suivantAddForce ne fonctionne pas dans l'unité

public class SpeedUp : MonoBehaviour { 

    public Rigidbody2D ball; 

    void OnTriggerEnter2D(Collider2D col) 
    { 
     if (col.tag == "Ball") { 
      ball.AddForce(Vector2.left * 1000f); 
      Debug.Log("ABC"); 
     } 

    } 

} 

et chaque fois que je lance mon jeu, le debug.log (« ABC ») imprime ABC dans la console, mais le modèle du solide indéformable n » Je bouge, ça reste comme ça. Quelqu'un peut-il me expliquer pourquoi, parce que je ne comprends pas pourquoi le travail d'impression de la console et la ne se déplace pas modèle du solide indéformable

Voici le code pour le Bal

public class Ball : MonoBehaviour { 

    public Rigidbody2D rb; 
    public Rigidbody2D hook; 
    public float releaseTime = 0.15f; 

    private bool isPressed = false; 

    void Update() 
    { 
     if (isPressed) 
     { 

      Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); 

      if (Vector3.Distance(mousePos, hook.position) > 2.5f) 
      { 
       rb.position = hook.position + (mousePos - hook.position).normalized * 2.5f; 
      } 
      else 
      { 
       rb.position = mousePos; 
      } 
     } 
    } 

    void OnMouseDown() 
    { 
     isPressed = true; 
     rb.isKinematic = true; 
    } 

    void OnMouseUp() 
    { 
     isPressed = false; 
     rb.isKinematic = false; 
     StartCoroutine(Release()); 
    } 

    IEnumerator Release() 
    { 
     yield return new WaitForSeconds(releaseTime); 
     GetComponent<SpringJoint2D>().enabled = false; 
     this.enabled = false; 
    } 
} 
+0

Le corps rigide est-il marqué comme cinématique? Pouvez-vous nous montrer une capture d'écran de ses paramètres? – Serlite

+0

@Serlite la balle est cinématique lorsque la souris ne la touche pas, mais pour atteindre le collisionneur, la balle doit être tirée avec la souris et elle devient dynamique dès qu'elle est touchée – Edward

+2

Il n'y a pas de problème avec le code lui-même - votre problème réside soit dans la façon dont le corps rigide de la balle est mis en place, soit dans l'interaction avec la souris et la balle que vous décrivez. – ryeMoss

Répondre

0

Le ne se déplace pas modèle du solide indéformable peut être il est nécessaire de getComponenrt()

Ainsi, ajoutez vide méthode Start() dans votre script

SpeedUp public class: MonoBehaviour {

public Rigidbody2D ball; 

void Start() 
{ 
    ball = ball.GetComponent<Rigidbody2D>(); 
} 

void OnTriggerEnter2D(Collider2D col) 
{ 
    if (col.tag == "Ball") { 
     ball.AddForce(Vector2.left * 1000f); 
     Debug.Log("ABC"); 
    } 

} 

}