public void MoveRotation (float angle);

Parámetros

angle@param angle El nuevo ángulo de rotación para el objeto Rigidbody.

Descripción

Rota el rigidbody a un angle.

Rota el rigidbody a un ángulo angle especificado, calculando la velocidad angular apropiada requerida para rotar el rigidbody a ese ángulo durante la próxima actualización del simulador de física. Durante el movimiento, el rozamiento angular no afectará al cuerpo. Esto causa que el objeto se mueva rápidamente desde el ángulo existente al angle especificado.

Debido a que esta característica permite que un rigidbody se mueva rápidamente al angle especificado, cualquier collider adjunto al rigidbody reaccionará como se espera; es decir, producirá colisiones y/o disparará triggers. Esto también significa que si los colliders producen una colisión, entonces esto afectará al movimiento del rigidbody y potencialmente lo detendrá, no permitiéndole alcanzar el angle especificado durante la próxima actualización de la física. Si el rigidbody es cinemático entonces ninguna colisión afectará al rigidbody mismo, y sólo afectará a otros colliders dinámicos.

Los rigidbodies 2D tienen un límite fijado sobre cuán rápido pueden rotar; por tanto, intentar rotar ángulos grandes en escalas de tiempo cortas puede resultar en que el rigidbody no alcance el angle especificado durante la próxima actualización de la física. Es recomendado que se utilice esto para únicamente movimientos rotacionales pequeños.

Es importante entender que un cambio en la rotación real solo ocurrirá durante la próxima actualización de la física; por tanto, estar llamando a este método repetidamente sin esperar a la próxima actualización resultará en que solo sea usada la última actualización. Por esta razón, es recomendado que sea invocado durante la llamada al método FixedUpdate.

// MoveRotation
// The sprite is set a rotation speed.

using UnityEngine; using System.Collections;

public class Example : MonoBehaviour { public Texture2D tex;

private Rigidbody2D rb2D; private Sprite mySprite; private SpriteRenderer sr; private float revSpeed = 50.0f;

void Awake() { sr = gameObject.AddComponent<SpriteRenderer>(); rb2D = gameObject.AddComponent<Rigidbody2D>(); }

void Start() { mySprite = Sprite.Create(tex, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f), 100.0f); transform.localScale = new Vector3(3.0f, 3.0f, 3.0f); rb2D.gravityScale = 0.0f; sr.sprite = mySprite; }

void FixedUpdate() { rb2D.MoveRotation(rb2D.rotation + revSpeed * Time.fixedDeltaTime); } }