Buenas noches, una pregunta por favor.
Necesito que una plataforma de vueltas cuando algo se le choca.
si le añado esto:
public float speed;
transform.Rotate(20,*Time.deltaTime*speed,);
Gira sin problemas sobre su axis.
Pero si le añado la colisión:
using UnityEngine;
using System.Collections;
public class gira : MonoBehaviour {
public float speed;
//public float time;
void OnCollisionEnter(Collision collision){
foreach (ContactPoint contact in collision.contacts) {
transform.Rotate(20,*Time.deltaTime*speed,);
}
}
}
Gira pero se detiene en el primer segundo de el time.deltatime.
Probé con trigger en vez de collision y el resultado es el mismo.
Probé añadiendo un float tiempo pero hace caso omiso...
Agradeceria una idea.
Gracias
El problema es(creo yo) que al utilizar la void OnColllisionEnter o un triggerEnter, esto solo se va a "revisar" una vez que algo entre o choque pero luego de eso todo lo que esté dentro de la void se desactiva, proba o usar Stay o crear una bool "girar" que sea true cuando suceda la colición y en el Update creá un condicional que diga que cuando "girar" sea true, el objeto rote.Algo así:
using UnityEngine;
using System.Collections;
public class gira : MonoBehaviour {
public float speed;
public bool girar = false;
void Update () {
if(girar){
transform.Rotate(20,*Time.deltaTime*speed);
}
}
void OnCollisionEnter(Collision collision){
girar = true;
}
}
}
E incluso puedes crear una corutina para que cuando pase X tiempo girar se vuelva false(ya que ví que creaste una variable time). Espero haberte ayudado : )
Biarox1166, simplemente has dado en el clavo, no se me ocurrió usar una bool...en fin va perfecto, y si efectivamente tenia pensado meterle un timer o algo, pero como me lio con las coorutinas pues ago uso de el timer de los novatos jejejjejjee, lo dejo asi;
using UnityEngine;
using System.Collections;
public class gira : MonoBehaviour {
public float speed;
public bool girar = false;
void Update ()
{
if(girar){
transform.Rotate(20,,*Time.deltaTime*speed);
}
}
void OnCollisionEnter(Collision collision){
girar = true;
Invoke ("para",3);
}
void para()
{
girar = false;
}
}
Así meto mano de la bool y le digo que a los 3 segundos me la desactive y yata :)
Mil gracias :)
De nada @ramunda!!!!!!! buenísimo que te pude ayudar y no hay problema con lo de las corutinas habeces también me mareo un poco jajaja saludos.
Cita de: Biarox1166 date=1472345619De nada @ramunda!!!!!!! buenísimo que te pude ayudar y no hay problema con lo de las corutinas habeces también me mareo un poco jajaja saludos.
:), Salut!!