How to show velocity of prefab in scene?
I am making a projectile game and want to display its instant velocity in the game. For this I am using following approach:
Instantiate ballProjectile prefab whenever a shoot button is pressed with some velocity.
Display velocity of ballProjectile using UI.Text element.
But I am not able to do this as velocity is not updated in every frame.
My code is
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ProjectileFlow : MonoBehaviour {
public Rigidbody2D asteroidProjectile ;
public float speed = 10;
public Text range, height, velocityX, velocityY;
public float fireAngle;
private Vector3 instantVel;
private float vY, vX;
void Start()
{
transform.Rotate (new Vector3 (0,0 , fireAngle -30));
vY = speed * Mathf.Sin (fireAngle * Mathf.Deg2Rad);
vX = speed * Mathf.Cos (fireAngle * Mathf.Deg2Rad);
}
void FixedUpdate () {
vY = speed * Mathf.Sin (fireAngle * Mathf.Deg2Rad);
vX = speed * Mathf.Cos (fireAngle * Mathf.Deg2Rad);
if (Input.GetKeyDown(KeyCode.A)) {
ThrowProjectile();
}
if (Input.GetKeyDown (KeyCode.R)) {
Application.LoadLevel(Application.loadedLevel);
}
updateValues ();
}
public void ThrowProjectile()
{
Rigidbody2D asteroidClone = (Rigidbody2D) Instantiate(asteroidProjectile, transform.position, transform.rotation);
asteroidClone.velocity = new Vector3(vX, vY, 0);
instantVel = asteroidClone.velocity;
}
public void adjustSpeed(float newSpeed)
{
speed = newSpeed ;
}
public void adjustAngle(float newAngle)
{
fireAngle = newAngle;
transform.Rotate (new Vector3 (0,0 , fireAngle -30));
transform.eulerAngles = new Vector3(0, 0, fireAngle -30);
}
void updateValues()
{
velocityX.text = "Vx: " + instantVel.x.ToString();
velocityY.text = "Vy: " + instantVel.y.ToString();
}
}
Can you please format your code a bit so it could be readable?
@incorrect: done and sorry for the inconvenience.
Why do you think speed is not updated every frame? As long as your projectile is RigidBody2D, it's speed is updated every physics frame, so it should work as well.
In your case it can never be updated because you are storing the starting value in instantVel and then try to dispay it.
Your answer
Follow this Question
Related Questions
Problem with prefab 0 Answers
prefab script accesses prefab values instead of instantiated values - but only in the player 0 Answers
How do I instantiate UI prefabs 0 Answers
Use Grid Layout to set GameObjects position 0 Answers
New UI - Referencing deep nested components on an prefab instantiation 1 Answer