2016-04-14 14 views
1

x-axis boyunca yönü değiştirin Fare düğmesi tıklatıldığında duvarları değiştirmek için karakterime ihtiyacım olan duvar koşucu oyunu yapıyorum. Yerçekimi ile çalıştım, ama istenmeyen etkiler verdi. Bu yüzden şimdi transform.position ile çalışıyorum, ama şimdi karakter sadece bölünmüş bir saniye için hareket eder (ben sadece fare düğmesi tıklatıldığında transform.position etkinleştirir varsayalım).Unity - GetMouseButtonDown

Fare geçişi yerine yön değiştirmeyi nasıl değiştirebilirim? Bir çeşit döngüye ihtiyacım var mı, yoksa neredeyim?

Benim sınıfı:

//Variables used by the Player 
public int flyingSpeed; 
bool rightWall = true; 
bool inAir = false; 

// Use this for initialization 
void Start() { 
} 

// Update is called once per frame 
void Update() { 
//Constantly moves the Players position along the Y-axis 
    if (inAir == false) { 
     if (Input.GetMouseButtonDown (0) && rightWall == true) { 
      transform.position += Vector3.left * flyingSpeed * Time.deltaTime; 
      rightWall = false; 
      inAir = true; 
     } else if (Input.GetMouseButtonDown (0) && rightWall == false) { 
      transform.position += Vector3.right * flyingSpeed * Time.deltaTime; 
      rightWall = true; 
      inAir = true; 
     } 
    } 
} 

void OnCollisionEnter2D(Collision2D coll) { 
    inAir = false; 
} 

cevap

0

Input.GetMouseButtonDown yöntem yalnızca duvarları geçmek için yeterli değildir düğme böylece hareketli işlemleri yalnızca bir kez yürütülür, tıklandığında o ilk karesinde, true döndürür. Fare oyuncu açıksa transform.position

  • denetler bir işlev olun ayarlayarak tıklandığında oyuncu derhal

    1. Move:

      aşağıdakilerden birini yapabilirsiniz, duvarlar arasında geçiş yapmak için Sağ veya sol duvar (hadi WallCheck dır). Sonra rightWall değerini her zaman değiştirmek fare clicked.And sonra Update yöntemini bu eklemek edilir

      if (WallCheck() != rightWall) transform.position += rightWall ? Vector3.left : Vector3.right * flyingSpeed * Time.deltaTime;