У меня есть небольшой скрипт, который заставляет объект возвращаться назад и вперед. Это птица для прокручивания вверх по бесконечному бегуну. Таким образом, он представляет собой траекторию полета. Этот скрипт перемещает его с одного конца на другой, и когда он достигает конца, он переворачивает 2D-спрайт и перемещается в противоположном направлении. Он работает большую часть времени. Но проблема в том, что иногда изображение переворачивается дважды, поэтому теперь он выглядит как его летающий назад, пока он не повторится. Каждый раз, когда он это делает, он кажется случайным.Объект, не ориентированный правильно
public class Fly : MonoBehaviour {
private bool dirRight = false;
public float speed;
public bool facingRight = false;
void Start(){
speed = Random.Range (15.0f, 22.0f);
}
void Update() {
if(transform.position.x >= 25.0f) {
dirRight = false;
Flip();
}
if(transform.position.x <= -25.0f) {
dirRight = true;
Flip();
}
if (dirRight)
transform.Translate (Vector2.right * speed * Time.deltaTime);
else
transform.Translate (-Vector2.right * speed * Time.deltaTime);
}
void Flip()
{
// Switch the way the player is labelled as facing
facingRight = !facingRight;
// Multiply the player's x local scale by -1
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
я модифицировал, если заявления и использовать мои Bools, а также положение, как например:
if(transform.position.x >= 25.0f && dirRight == true) {
dirRight = false;
Flip();
}
if(transform.position.x <= -25.0f && dirRight == false) {
dirRight = true;
Flip();
}
Я бегу сейчас и ждать, чтобы увидеть, если он работает.
Вы пытались log 'transform.position' всякий раз, когда звонки« Flip »? – NeverHopeless