2017-03-01 5 views
2

Unity hat dieses Beispielprojekt "Roll a Ball" unter diesem Link: https://unity3d.com/learn/tutorials/projects/roll-ball-tutorialUnity Beispielprojekt "Roll a Ball" funktioniert nicht auf dem iPad (Ball bewegt sich nicht)?

Ich konnte bauen und es funktioniert 100% gut auf meinem Mac. Ich kann mit den Pfeiltasten auf der Tastatur den Ball bewegen. Alles funktioniert auf der Mac-Plattform.

Allerdings, wenn ich den gleichen Code verwenden, um dieses Spiel auf meinem iPad zu erstellen und zu implementieren, merke ich, dass der Ball überhaupt nicht bewegt, wenn ich versuche, mit meinen Fingern den Ball zu bewegen. (Die einzige gute Sache ist, dass alle Würfel gut rotieren)

Also meine Frage ist, ob ich das C# -Skript für den Ball ändern muss, damit es für iPad funktioniert (obwohl das Skript bereits für Mac funktioniert)?

Hier ist die C# Skript für den Ball:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class PlayerController : MonoBehaviour 
{ 

    public float speed; 
    public Text countText; 
    public Text winText; 

    private Rigidbody rb; 
    private int count; 

    void Start() 
    { 
     rb = GetComponent<Rigidbody>(); 
     count = 0; 
     SetCountText(); 
     winText.text = ""; 
    } 

    void FixedUpdate() 
    { 
     float moveHorizontal = Input.GetAxis ("Horizontal"); 
     float moveVertical = Input.GetAxis ("Vertical"); 

     Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical); 

     rb.AddForce (movement * speed); 
    } 

    void OnTriggerEnter(Collider other) 
    { 
     if (other.gameObject.CompareTag ("Pick up")) 
     { 
      other.gameObject.SetActive (false); 
      count = count + 1; 
      SetCountText(); 
     } 
    } 

    void SetCountText() 
    { 
     countText.text = "Count: " + count.ToString(); 
     if (count >= 12) 
     { 
      winText.text = "You Win!"; 
     } 
    } 
} 

* Interessanterweise habe ich gerade festgestellt, dass die Art INPUT die Methode "GetTouch()" hat. Vielleicht könnte ich versuchen, diese Methode für iPad zu verwenden? Anfangs hatte ich gehofft, dass der generische Code im obigen C# -Skript für Mac auch für iPad funktionieren könnte. Vielleicht war meine Annahme falsch und ich muss einen anderen Code mit "GetTouch()" für iPad schreiben? OK, ich denke, das ist die mögliche Lösung, und werde das jetzt versuchen ... *

PS: BTW, verwende ich die neueste Unity (Version 5.5.2f1) und neuesten XCode (8.2.1) als von Februar 2017. Das iOS auf meinem iPad ist auch das neueste (Version 10.2.1).

Antwort

1

Ich habe nie etwas für iPad in Unity erstellt, aber mit der Beschreibung, die Sie angegeben haben, denke ich, dass das Problem nicht in Ihrem Skript ist. Ich würde Dich stattdessen zu überprüfen empfehlen, wenn alles richtig im Eingabe Manager verknüpft ist (Bearbeiten-> Projekt Einstellungen-> Input)

https://docs.unity3d.com/Manual/class-InputManager.html

Ich denke, das Problem ist, das Spiel ist nicht Ihre Eingaben von den Erfassungs iPad. Sie können versuchen, dem Ball eine konstante Geschwindigkeit in x-Achse hinzuzufügen, und wenn er sich bewegt, können Sie sich auf den Eingabe-Manager konzentrieren.

Außerdem lesen Sie in diesem Link: http://wiki.unity3d.com/index.php?title=Basic_iOs_Input_Tutorial

+0

Vielen Dank für Ihre Kommentare. Klar, lass mich das untersuchen. Es scheint, dass die Art und Weise, wie Mac und iPad "Benutzereingaben" handhaben, unterschiedlich ist. Ich hatte gehofft, dass der generische Code in meinem Beitrag für beide Plattformen gut genug war. Aber lass mich dein Dokument lesen und sehen .... Danke. :-) – Thanh

+0

Kein Problem. Ich wünschte, ich könnte eine eigene Probe hinzufügen, aber ich besitze kein iPad und kann sie nicht testen. –

1

Sie haben die Eingangseinstellungen zu ändern. Ich weiß nicht genau wo ich sie finden kann, aber dann kannst du die Eingänge "horizontal" und "vertikal" ändern. Sie sollten sich das genauer ansehen, denn Sie können auch Eingaben hinzufügen, was sehr nützlich ist, wenn Sie die Kontrolle über Ihr Spiel haben wollen.

Oh, es ist nur die vorherige Antwort.

+0

Entschuldigung für mein Englisch obwohl. –

+0

Danke für Ihre Eingabe. Ich werde das versuchen. Ich stelle fest, dass der Typ INPUT eine Methode "GetTouch()" hat, die ich für iPad verwenden könnte. Ich hatte jedoch gehofft, dass der Zweck von Unity darin besteht, "den generischen Code einmal zu schreiben und für alle Plattformen zu erstellen" statt "die verschiedenen Methoden für verschiedene Plattformen zu schreiben, um 'Benutzereingaben' zu lesen ..." Aber lass mich dein versuchen Vorschläge und sehen, wie es geht. Vielen Dank. – Thanh

+0

Das stimmt auch: Da die Touch-Klasse ein Objekt ist, das beim Berühren des Bildschirms instanziiert wird, könnten Sie versuchen, foreach (Touch t in Input.touches) {} 'zu wählen und die Eigenschaften dieser Berührung zu erhalten. –