- Home /
Answer by LukeAntConroy · Feb 11, 2013 at 06:35 PM
using UnityEngine; using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
float F_time;
void Update ()
{
F_time += Time.deltaTime;
if(F_time < 2.0f)
{
transform.Translate(Vector3.left * Time.deltaTime);
}
}
}
Answer by AndrewGrayGames · Feb 11, 2013 at 06:26 PM
Not a stupid question!
Let's break down your problem a bit, first.
A) I want my object to be translated
B) I want this translation to only last for two seconds.
First, translation is simple:
transform.Translate(xAmount, yAmount, zAmount);
...Or...
transform.Translate(vector3Amount);
I prefer the Vector3 version because you can achieve Framerate Independence really easily, as such:
// Move up 2 units per second, and forward 1 unit per second.
Vector3 movement = new Vector3(0.0f, 2.0f, 1.0f) * Time.deltaTime;
transform.Translate(movement);
...Now, let's combine it with that other requirement, that the translation last two seconds:
public class FooBehavior : MonoBehaviour
{
#region Fields/Properties
public float Duration = 2.0f;
private float _moveEndsAt = 0.0f;
public Vector3 Movement = new Vector3(0.0f, 2.0f, 1.0f);
#endregion Fields/Properties
#region Engine Hooks
public void Start()
{
_moveEndsAt = Time.time + Duration;
}
public void FixedUpdate()
{
if(Time.time > _moveEndsAt)
return;
Vector3 movement = Movement * Time.deltaTime;
transform.Translate(movement);
}
#endregion Engine Hooks
}
Pretty much, we just figure out when we want the move to stop (now + duration), and as long as the current time is prior to that ending time, we perform the translation every frame.
Good question, and hope that helps!
Your answer
Follow this Question
Related Questions
Click to Move Object till it reaches a certain place 1 Answer
Movement restriction... 1 Answer
Loop from Point A to Point B after Point C 2 Answers
How to stop coroutines or functions 2 Answers
Move to a clicked point? 1 Answer