Alex W Geschrieben 19. Mai 2018 Melden Share Geschrieben 19. Mai 2018 Hi, ich möchte in einem Script sagen, dass man Spieler, wenn man auf einen Touchscreen nach oben wischt, dieser sofort sagen wir mal y + 3 nach oben teleportiert wird. Genau das gleiche wenn man nach unten wischt, nur y -3. Wie mach ich 1. das wischen und 2. das der Spieler sofort auf der anderen höhe erscheint? Danke schonmal im vorraus! Mein Player Script sieht momentan so aus: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerControls : MonoBehaviour { Rigidbody2D m_Rigidbody2D; float m_Speed; public float m_SpeedMultiplier; public float m_SpeedIncreaseMilestone; private float m_SpeedMilestoneCount; // Use this for initialization void Start () { m_Rigidbody2D = GetComponent<Rigidbody2D> (); m_Speed = 5f; m_SpeedMilestoneCount = m_SpeedIncreaseMilestone; } // Update is called once per frame void Update () { m_Rigidbody2D.velocity = Vector2.right * m_Speed; if (transform.position.x > m_SpeedMilestoneCount) { m_SpeedMilestoneCount += m_SpeedIncreaseMilestone; m_SpeedIncreaseMilestone = m_SpeedIncreaseMilestone * m_SpeedMultiplier; m_Speed = m_Speed * m_SpeedMultiplier; } } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KaBau Geschrieben 20. Mai 2018 Melden Share Geschrieben 20. Mai 2018 Ich bin gegenüber anderen Mitgliedern hier noch ein Anfänger, würde aber meinen, dass du noch keinen Input abfragst, um danach etwas zu bewegen. Anbei ein Script zum Bewegen meiner Camera (nur nach links und rechts): void Update () { if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) { touchYes = true; cameraMoveHorizontal = Input.GetTouch(0).deltaPosition.x; } else { touchYes = false; } } private void FixedUpdate() { if (touchYes) { if (cameraMoveHorizontal > 0 && transform.position.x <= cameraXMax || cameraMoveHorizontal < 0 && transform.position.x >= cameraXMin) { Vector3 cameraMovement = new Vector3(cameraMoveHorizontal, 0.0f, 0.0f); transform.Translate(cameraMovement * cameraMoveSpeed * Time.deltaTime); } } } } Mit "Input.touchCount > 0" frage ich ab, ob eine Berührung des Bildschirm (also ein Tuoch) erfolgt. Danach Frage ich die Phase ab. Siehe dazu auch https://docs.unity3d.com/ScriptReference/Touch-phase.html Dann wandle ich die Toucheingabe in eine Variable um: "cameraMoveHorizontal = Input.GetTouch(0).deltaPosition.x;" um diesen Wert weiter unten in eine Bewegung umzusetzen. Ups, habe eben meine Variablen des Script vergessen. Hier sind sie: float cameraMoveHorizontal =0.0f; public float cameraMoveSpeed = 4.5f; int cameraXMin = -2; int cameraXMax = 2; bool touchYes = false; Geht sicher auch eleganter, soll dir aber ersteinmal einen Anstoß zum Denken geben. 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.