Freeze game object for 3 secs then move again?,How make Ball stop for 3 secs and move normaly after?
So I'm an absoulute beginner and I have put this script togheter from multiple tutorials. I have made a 'Pong' like game where once the ball hits the left or right wall, it goes back to the center and moves right. Now the ball moves to the right immediatley and I don't want that. I want it to wait 3 secs before it moves again after going to the centre. How do I do that? Thanks in advance!
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;
public class BallScript : MonoBehaviour { public float speed = 30f; int ScorePlayer1; int ScorePlayer2; public Text txtSpieler1; public Text txtSpieler2; private AudioSource audioSource;
// Start is called before the first frame update
void Start()
{
GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
audioSource = GetComponent<AudioSource>();
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D col)
{
print(col.gameObject.name);
if(col.gameObject.name == "Player1")
{
float y = hitObject(transform.position, col.transform.position, col.collider.bounds.size.y);
Vector2 dir = new Vector2(1, y);
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
if (col.gameObject.name == "Player2")
{
float y = hitObject(transform.position, col.transform.position, col.collider.bounds.size.y);
Vector2 dir = new Vector2(-1, y);
GetComponent<Rigidbody2D>().velocity = dir * speed;
}
if (col.gameObject.name == "WallRight")
{
ScorePlayer1 = ScorePlayer1 + 1;
txtSpieler1.text = ScorePlayer1.ToString();
restart();
GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
}
if (col.gameObject.name == "WallLeft")
{
ScorePlayer2 = ScorePlayer2 + 1;
txtSpieler2.text = ScorePlayer2.ToString();
restart();
GetComponent<Rigidbody2D>().velocity = Vector2.right * speed;
}
audioSource.Play();
}
void restart()
{
Vector2 temp = new Vector2(0,0);
gameObject.transform.position = temp;
}
float hitObject(Vector2 ballPos, Vector2 PlayerPos, float PlayerHoehe)
{
return (ballPos.y - PlayerPos.y) / PlayerHoehe;
}
}
Your answer
Follow this Question
Related Questions
Light not instantiate after a time 0 Answers
why the Timer isn't working 0 Answers
What is the best way to search a text clock UI for certain times 0 Answers
Trouble Navigating Pause Menu.... 0 Answers
[HELP] List instance not being destroyed OnTriggerExit 2 Answers