Buenas noches , tengo un dilema con una bola de un juego tipo "arkanoid" que estoy montando.
Todo va bien excepto cuando la bola vuelve a la plataforma , allí deberían resetearse las fisicas que le aplico en el start.
Para ello uso la función de el Rigidbody2D y lo pongo en kinematico, creía que con esto bastaria....pero no , cada vez que renace la bola va mas rápida, evidentemente esta duplicando la fuerza asignada en el start....pero no se porque!
Espero que puedan ayudar.
Alla va el script:
Todo va bien excepto cuando la bola vuelve a la plataforma , allí deberían resetearse las fisicas que le aplico en el start.
Para ello uso la función de el Rigidbody2D y lo pongo en kinematico, creía que con esto bastaria....pero no , cada vez que renace la bola va mas rápida, evidentemente esta duplicando la fuerza asignada en el start....pero no se porque!
Espero que puedan ayudar.
Alla va el script:
using UnityEngine;
using System.Collections;
public class BallScript : MonoBehaviour {
private bool ballIsActive;
private Vector3 ballPosition;
private Vector2 ballInitialForce;
public GameObject playerObject;
public AudioClip hitSound;
AudioSource audio;
private Rigidbody2D rb;
void Start ()
{
rb = GetComponent<Rigidbody2D>();
ballIsActive = false;
ballInitialForce = new Vector2 (50.0f,300.0f);
ballPosition = transform.position;
audio=GetComponent<AudioSource>();
}
void Update ()
{
if (Input.GetButtonDown ("Jump") == true)
{
if (!ballIsActive)
{
///reseteamos la fuerza?
rb.isKinematic = false;
rb.AddForce (ballInitialForce);
ballIsActive = !ballIsActive;
}
}
if (!ballIsActive && playerObject != null)
{
ballPosition.x = playerObject.transform.position.x;
transform.position = ballPosition;
}
}
void OnCollisionEnter2D(Collision2D collision)
{
if (ballIsActive)
{
audio.PlayOneShot (hitSound);
}
if (collision.gameObject.tag == "mata"