- Home /
MoveTowards problem
Hey everyone. I'm working on a main menu, and i'm trying to get it to move back and forth when you click certain buttons. When I click options and it moves to the options area, but when I try to hit back (They are both run under the same script), it stays put and doesn't move back.
Here is the script i'm using:
 var Selectsound : AudioClip;
 var HoverSound : AudioClip;
 var target: Transform;
 var speed: float;
 var Select : boolean = false;
 
 function OnMouseEnter () {
        audio.PlayOneShot(HoverSound, 0.7);
       transform.renderer.material.color = Color.gray;
     }
     
     function OnMouseExit () {
       transform.renderer.material.color = Color.white;
     }
     
         function OnMouseDown () {
         Select = true;
       transform.renderer.material.color = Color.cyan;
       audio.clip = Selectsound;
        audio.Play();
     }
     
     function Update () {
                    if(Select == true){
       var step = speed * Time.deltaTime;
        Camera.mainCamera.transform.position = Vector3.MoveTowards(Camera.mainCamera.transform.position, target.position, step);
     }
     }
Answer by iwaldrop · Mar 27, 2013 at 03:38 AM
It looks to me like you only ever tell the object to move to one place. You're going to need to know which state it is in; position1, position2 (and possibly moving as well). If the menu is in position1 then you need to set the target to the position of position2. Make sense?
1 > 2 2 > 1
Another way to think of the problem is to cache the initial position of the menu and move to a position defined by it's Select state.
 var startingPosition : Vector3;
 
 function Awake()
 {
     startingPosition = transform.position;
 }
 
 function OnMouseDown()
 {
     MoveMenu(Select);
     Select = !Select;
 }
 
 function MoveMenu(direction : bool)
 {
     Vector3 pos = (direction ? target.position : startingPosition);
     do
     {
         Camera.mainCamera.transform.position =
         Vector3.MoveTowards(Camera.mainCamera.transform.position,
         pos, step);
         moving = !(transform.position == pos);
         yield return null;
     } while (moving)
 }
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                