Hallo,
ich habe ein Spiel in Unity programmiert, in dem man mit einem Block verschiedenen Blöcken ausweichen muss. Wenn man diese berührt, fängt alles noch einmal an (ziemlich einfaches Spielprinzip).
Der Spielerblock bewegt sich dauerhaft nach vorne und man hat die Möglichkeit, sich nach rechts oder links zu bewegen.
Nun möchte ich, wenn ich am Anfang des Spiels die Leertaste drücke, dass sich dieser Block ab dann dauerhaft nach vorne bewegt. Nur leider geht der Spieler immer nur ein paar Pixel nach vorne, wenn ich die Leertaste drücke. Aber er soll dauerhaft nach vorne gehen. Ich hoffe, Ihr versteht, was ich meine.
Hier mein Quellcode:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class MoveScript : MonoBehaviour
{
public float movespeed = 7f;
public float movespeed2 = 7f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float H = Input.GetAxis("Horizontal") * movespeed;
Vector3 vec = new Vector3(H, 0, 0);
Vector3 frontvec = new Vector3(0, 0, movespeed2);
Ab hier versuche ich, dies zu programmieren:
if (Input.GetKeyDown(KeyCode.Space))
{
transform.Translate(frontvec * movespeed2 * Time.deltaTime);
}
if (Input.GetKeyUp(KeyCode.Space))
{
transform.Translate(frontvec * movespeed2 * Time.deltaTime);
}
Ab hier geht es mit dem Rest weiter:
transform.Translate(vec * movespeed * Time.deltaTime);
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Starters")
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "SpeedP")
{
movespeed2 += 1f;
}
if (other.gameObject.tag == "SideSPWN")
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
}