Restarting after pressing a key
Hello there! I´m very new to this whole community and programming stuff. I just started a week ago. So for some people, this might be a very simple question. I found a tutorial on Youtube to make a own Pong Game. And my question is how to get the Ball to move to the side of the player who just took a goal from his opponent, after pressing the space bar. For example: When Player1 got a goal, the ball should move to the side of player2 after he pressed the space bar. Here I got a Script which I use to control the Ball:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
public class BallScript : MonoBehaviour { public float speed = 30f; int scoreSpieler1; int scoreSpieler2; public Text txtSpieler1; public Text txtSpieler2; // Start is called before the first frame update void Start() { GetComponent().velocity = new Vector2(1, 0) * speed; //Vector2.right geht auch }
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D col)
{
print(col.gameObject.name);
//Debug.Log() würde auch gehen
if(col.gameObject.name == "Spieler1")
{
//Aufprall mit Spieler 1
float y = hitObject(transform.position, col.transform.position, col.collider.bounds.size.y);
print("Berechnung: " + y);
//Richtung berechnen
Vector2 dir = new Vector2(1, y);
//Richtungsvektor auf Physik anwenden
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
if(col.gameObject.name == "Spieler2")
{
//Aufprall mit Spieler 2
float y = hitObject(transform.position, col.transform.position, col.collider.bounds.size.y);
//Richtung berechnen
Vector2 dir = new Vector2(-1, y);
//Richtungsvektor auf Physik anwenden
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
//Tor für Spieler 1
if(col.gameObject.name == "VertikalerBalkenRechts")
{
print("TOR für Spieler 1");
scoreSpieler1 = scoreSpieler1 + 1;
txtSpieler1.text = scoreSpieler1.ToString();
//Neustart
restart();
}
//Tor für Spieler 2
if (col.gameObject.name == "VertikalerBalkenLinks")
{
print("TOR für Spieler 2");
scoreSpieler2++;
txtSpieler2.text = scoreSpieler2.ToString();
//Neustart
restart();
}
}
float hitObject(Vector2 ballPos, Vector2 schlägerPos, float schlägerHöhe)
{
return (ballPos.y - schlägerPos.y) / schlägerHöhe;
}
void restart()
{
//Ball an Anstoßposition befördern
Vector2 temp = new Vector2(0, 0);
gameObject.transform.position = temp;
}
}
Btw. I am German, please do not mind that some words in the code are actually German :D Thanks for your upcomming support :)
Your answer
Follow this Question
Related Questions
Touch buttons sometimes won't work 0 Answers
How do I make my movement script move the character UNTIL I let go of the key? 1 Answer
How do you change your z axis in a movement script. 1 Answer
Rigidbody2D movement is lagging 0 Answers
How to make a proper Drag&Drop (any GameObject) for the Hololens (Unity3D) 0 Answers