- Home /
Moving gameObject forward
Hey,
I'm trying to move my gameobject forward for specific vector by using MouseOver.When MouseExit it should move back. Momently my object moves forward.... just forward with speed. I don't know how to say how far it should move and how to go back...?
void OnMouseOver() {
gameObject.renderer.material.color = Color.cyan;
gameObject.transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + 0.1f);
}
void OnMouseExit(){
gameObject.renderer.material.color = Color.white;
}
Thanks for taking a look
Answer by robertbu · May 06, 2014 at 09:49 PM
As with most things in Unity, there are multiple approaches and solutions. Here is one solution:
using UnityEngine;
using System.Collections;
public class Bug25b : MonoBehaviour {
public float speed = 2.0f; // Units per second
private Vector3 startPos;
private Vector3 forwardPos;
private Vector3 toPos;
void Start() {
startPos = transform.position;
toPos = startPos;
forwardPos = transform.position + transform.forward * 1000000.0f;
}
void Update() {
transform.position = Vector3.MoveTowards(transform.position, toPos, speed * Time.deltaTime);
}
void OnMouseEnter() {
gameObject.renderer.material.color = Color.cyan;
toPos = forwardPos;
}
void OnMouseExit(){
gameObject.renderer.material.color = Color.white;
toPos = startPos;
}
}
Hi, your code works but when my object is on its start position it is unsettled. Don't know how to discribe it better... It doesn't stand still at its position. Do you know why? And how to change it? Another problem is, that I want to limit mouseEnter. So that it can just move forward one time. I think a if-loop would save this problem, not?
romeo046, you've been given a very good head-start by robertu. Re-post the script with changes you've attempted to make and we can take it from there.
public Vector3 orgPos,fwdPos; void Start() { orgPos=transform.position; fwdPos=(transform.position.x,transform.position.y,transform.position.z-0.1f); } void On$$anonymous$$ouseEnter() { transform.position=fwdPos; }void On$$anonymous$$ouseExit() { transform.position=orgPos; }
Answer by Ancy · Nov 06, 2015 at 02:26 PM
public Vector3 orgPos,fwdPos; void Start() { orgPos=transform.position; fwdPos=(transform.position.x,transform.position.y,transform.position.z-0.1f); } void OnMouseEnter() { transform.position=fwdPos; } void OnMouseExit() { transform.position=orgPos; }