Increase velocity of gameObject every time it spawns?
I'm trying to increase the speed of the Ball in a Pong game. I have a score that increases by 1 if the ball crosses a boundary on either the blue and red side. The ball is then spawned to the middle of the game world and the score increase 'till 10 and then pauses. That's what I have so far.
Here's the two scrips associated to the velocity of the Ball:
For the GameEngine:
using UnityEngine;
using System.Collections;
public class GameEngine : MonoBehaviour
{
public int bluePoints;
public int redPoints;
Vector3 velocity;
public Canvas canvas;
// Use this for initialization
void Start ()
{
bluePoints = 0;
redPoints = 0;
canvas.enabled = false;
}
// Update is called once per frame
void Update ()
{
if (bluePoints == 10)
{
Time.timeScale = 0;
canvas.enabled = true;
}
if (redPoints == 10)
{
Time.timeScale = 0;
canvas.enabled = true;
}
}
void OnBlueScore()
{
bluePoints++;
}
void OnRedScore()
{
redPoints++;
}
void IncreaseVelocity()
{
transform.Translate (velocity * 10 * Time.deltaTime);
}
}
And for the Ball:
using UnityEngine;
using System.Collections;
public class Ball : MonoBehaviour
{
public Vector3 velocity;
public GameObject gameEngine;
public GameObject redPaddle;
public GameObject bluePaddle;
void Start ()
{
}
void Update ()
{
gameObject.transform.Translate (velocity * Time.deltaTime);
if (gameObject.transform.position.z >= 12.33f)
{
if (velocity.z > 0)
{
velocity.z = velocity.z * -1;
}
}
if (gameObject.transform.position.z <= -12.33f)
{
if (velocity.z < 0)
{
velocity.z = velocity.z * -1;
}
}
if (gameObject.transform.position.x <= -15.13)
{
gameEngine.SendMessage("OnBlueScore");
gameEngine.SendMessage("IncreaseVelocity");
gameObject.transform.position = new Vector3 (0, 0.5f, 0);
}
if (gameObject.transform.position.x >= 15.13)
{
gameEngine.SendMessage("OnRedScore");
gameEngine.SendMessage("IncreaseVelocity");
gameObject.transform.position = new Vector3 (0, 0.5f, 0);
}
if (velocity.x > 0)
{
Bounds bluePaddleBounds = bluePaddle.GetComponent<BoxCollider>().bounds;
if(gameObject.GetComponent<BoxCollider>().bounds.Intersects(bluePaddleBounds))
{
velocity.x = velocity.x * -1;
}
}
if (velocity.x < 0)
{
Bounds redPaddleBounds = redPaddle.GetComponent<BoxCollider>().bounds;
if(gameObject.GetComponent<BoxCollider>().bounds.Intersects(redPaddleBounds))
{
velocity.x = velocity.x * -1;
}
}
}
}
Answer by andzq · Oct 19, 2016 at 01:54 AM
if you want the ball to be faster after each goal - just add "goals * aCertainVelocity" to the ball at its respawn - would be my first idea
Your answer
Follow this Question
Related Questions
How can I make this translation smoother? 0 Answers
is it possible for velocity vectors to be added on the players axis? 1 Answer
Transform constant moving in scene even if translated for Vector3.zero 1 Answer
Y value in transform.Translate when not grounded - gravity problem 0 Answers
How would someone go about creating multiple triggers in one script 0 Answers