Jump to content
Unity Insider Forum

PlayerScript Movement up down UNITY


Alex W

Recommended Posts

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;
        }
    }


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...