HolMarcel Geschrieben 20. August 2015 Melden Share Geschrieben 20. August 2015 Hallo, ich kenn mich hier noch nicht aus weil ich mich gerade registriert habe und jetzt einfach ein neues Thema machen, ich kenn mich mit Android development noch nicht so aus und brauche Hilfe, wie kann ich mit Buttons für Android den Player Steuern? Also bei einem Jump button springt der Player und so. Bei dem Pause Menü usw geht dass schon von Haus aus. Danke Hier das Player Script: using UnityEngine; using System.Collections; public class Player : MonoBehaviour { //Floats public float maxSpeed = 3; public float speed = 50f; public float jumpPower = 150f; //Booleans public bool grounded; public bool canDoubleJump; //Stats public int curHealth; public int maxHealth = 3; //References private Rigidbody2D rb2d; private Animator anim; void Start () { rb2d = gameObject.GetComponent<Rigidbody2D>(); anim = gameObject.GetComponent<Animator>(); curHealth = maxHealth; } void Update () { anim.SetBool("Grounded",grounded); anim.SetFloat("Speed", Mathf.Abs(rb2d.velocity.x)); if (Input.GetAxis("Horizontal") < -0.1f) { transform.localScale = new Vector3(-1, 1, 1); } if (Input.GetAxis("Horizontal") > 0.1f) { transform.localScale = new Vector3(1, 1, 1); } if (Input.GetButtonDown("Jump")) { if (grounded && Input.GetButtonDown("Jump")) { rb2d.AddForce(Vector2.up * jumpPower); grounded = false; } else { if (canDoubleJump) { canDoubleJump = false; rb2d.velocity = new Vector2(rb2d.velocity.x, 0); rb2d.AddForce(Vector2.up * jumpPower / 1.75f); } } } if(curHealth > maxHealth){ curHealth = maxHealth; } if(curHealth <= 0){ curHealth = 0; Die (); } } void FixedUpdate() { { } Vector3 easeVelocity = rb2d.velocity; easeVelocity.y = rb2d.velocity.y; easeVelocity.z = 0.0f; easeVelocity.x *= 0.75f; float h = Input.GetAxis("Horizontal"); //Fake friction / Easing the x speed of our player if (grounded) { rb2d.velocity = easeVelocity; } //Moving the player rb2d.AddForce((Vector2.right * speed) * h); //Limiting the speed of the player if (rb2d.velocity.x > maxSpeed) { rb2d.velocity = new Vector2(maxSpeed, rb2d.velocity.y); } if (rb2d.velocity.x < -maxSpeed) { rb2d.velocity = new Vector2(-maxSpeed, rb2d.velocity.y); } } void Die(){ Application.LoadLevel(Application.loadedLevel); } public void Damage(int dmg){ curHealth -= dmg; gameObject.GetComponent<Animation>().Play("RedFlash1"); } public IEnumerator KnockBack (float knockDur, float knockBackPwr, Vector3 knockBackDir) { float timer = 0; while (knockDur>timer) { timer += Time.deltaTime; rb2d.velocity = new Vector2 (0, 0); rb2d.AddForce (new Vector3 (knockBackDir.x * -10, knockBackDir.y * knockBackPwr, transform.position.z)); } yield return 0; } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Verdemis Geschrieben 1. März 2016 Melden Share Geschrieben 1. März 2016 Hallo, ich vermute mal Du meinst virtuelle Buttons? Der mit Abstand einfachste Weg wäre wohl einen Button zu erstellen und die OnMouseDown() Funktion zu nutzen. Wichtig ist dabei das der Button entweder ein UI Element ist oder zumindest einen Collider hat. Die Funktion OnMouseDown wird dann immer aufgerufen wenn der Spieler auf das Objekt tippt. Wenn Du lieber die integrierte Touch Funktionen nutzen möchtest, kannst Du auch via Raycast prüfen ob der Spieler gerade auf den Button getippt hat. Du greifst dir einfach die aktuelle Position ab wo geklickt wurde und führst dort einen Raycast aus. So erhälst Du den ersten Collider auf den der Raycast trifft (falls überhaupt) und musst nur prüfen ob der getroffene Collider der selbe ist wie der deines Button. Wenn ja, kannst Du die entsprechenden Aktionen ausführen. Das ist jetzt nur eine sehr vereinfachte Erklärung, aber da ich auf der Arbeit sitze muss ich mich etwas kurz fassen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.