2017-04-19 2 views
0

Also ich beginne gerade mit der Programmierung, und ich bin frisch zu diesem Thema.Move/Roll Ball mit Beschleunigungsmesser

Ich habe mit der Unity-Game-Engine begonnen; Leute sagen, es ist nicht der beste Weg, aber was auch immer.

Ich machte das erste Spiel mit dem grundlegenden Tutorial der Einheit.

Tho kann ich die Komplexität von C# noch nicht wirklich verstehen. (Mit Visual Studio, nicht sicher, ob ich zu erhabenen und wie wechseln sollte)

Dieses Spiel ist über einen Ball bewegen und sammeln Sachen. Auf dem PC funktioniert es gut mit den AddForce und Vector3 Bewegung auf den Pfeiltasten. Obwohl ich versuchen wollte, dieses Spiel für ein mobiles Gerät zu machen, dachte ich darüber nach, anstatt den Bildschirm zu tippen, könnte ich das Gyroskop des mobilen Geräts verwenden. Ich habe die "Gyro" -Variable (?) In der Unity-API-Dokumentation gefunden, aber ich weiß nicht, wie ich sie definiere, nur um die x- und z-Achse zu bewegen, damit der Ball nicht vom Tisch fliegt. Ich habe versucht, mit dem Gaspedal variabel, aber genau das passiert ist, auch tho y-Achse auf 0 Der folgende Code festgelegt wurde, ist, was ich bei Gameobject „Spieler“ haben bisher (?):

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

public class AccelerometerInput : 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 = ""; 
} 

private void Update() 
{ 
    transform.Translate(Input.gyro.x, 0, -Input.gyro.z); 
} 
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("Capsule")) 
    { 
     other.gameObject.SetActive(false); 
     count = count + 1; 
     SetCountText(); 
    } 
} 
void SetCountText() 
{ 
    countText.text = "Count: " + count.ToString(); 
    if (count >= 8) 
    { 
     winText.text = "You Win"; 
    } 
} 

} 

I‘ Ich bin neu in all dem, besonders in der Programmierung. Alles, was mir hilft zu verstehen, wie die Sprache interpretiert wird, wird sehr geschätzt! Vielen Dank!

+1

Sie haben Glück, dass Programmierer Ihnen hilft! genieße Unity, es ist Spaß – Fattie

+1

@Fattie Joe richtig? Hast du deinen Namen geändert? – Programmer

+1

lol ich tat @Programmer - Ich wusste nicht, dass Sie nur Ihren Spitznamen ändern können! – Fattie

Antwort

3

Ich habe mit der Unity-Game-Engine angefangen, die Leute sagen, es ist nicht die beste Art zu starten, aber was auch immer.

Das stimmt. Es gibt viele C# -Tutorials online. Versteh einfach die Grundlagen von C#, und in Unity sollte es dir gut gehen. Wenn du dies nicht tust, gibt es Einschränkungen bezüglich der Dinge, die du mit Unity machen kannst.

Um Ihre Frage zu beantworten, müssen Sie das Beschleunigungsmesser nicht der Gyro Sensor. Entfernen Sie außerdem transform.Translate(Input.gyro.x, 0, -Input.gyro.z); aus der Update-Funktion. Do nicht Objekte mit Rigidbody über transform.Translate verschieben, sonst werden Sie auf Probleme wie keine Kollision stoßen.

So etwas sollte es tun:

Vector3 movement = new Vector3(-Input.acceleration.y, 0f, Input.acceleration.x); 

Sie müssen noch einen Weg, um herauszufinden, ob Sie für mobile Geräte oder Desktop bauen. Dies kann mit dem Vorprozessor directives von Unity geschehen.

void FixedUpdate() 
{ 
    Vector3 movement = Vector3.zero; 

    //Mobile Devices 
    #if UNITY_IOS || UNITY_ANDROID || UNITY_WSA_10_0 
    movement = new Vector3(-Input.acceleration.y, 0.0f, Input.acceleration.x); 
    #else 
    //Desktop 
    float moveHorizontal = Input.GetAxis("Horizontal"); 
    float moveVertical = Input.GetAxis("Vertical"); 
    movement = new Vector3(moveHorizontal, 0f, moveVertical); 
    #endif 

    rb.AddForce(movement * speed); 
} 
+0

Vielen Dank! <3 –

Verwandte Themen