Hi. I want to have a button that moves an object. The problem is that when the button is clicked, it moves the object only once a little bit and you have to press the button again to move the object again. How can a make it so that while the button is being held down, the object moves and when you let go it stops? Here is my code:
void Start () {
}
// Update is called once per frame
void Update () {
}
private void OnGUI(){
if (GUI.Button (new Rect (menu1, menu2, 100, 50), "UP")) {
transform.Translate(Vector3.up * moveSpeed * (Time.deltaTime)*5);
}
if (GUI.Button (new Rect (menu3, menu4, 100, 50), "DOWN")) {
transform.Translate(-Vector3.up * moveSpeed * (Time.deltaTime)*5);
}
if (GUI.Button (new Rect (menu5, menu6, 100, 50), "Left")) {
transform.Translate(Vector3.left * moveSpeed * (Time.deltaTime)*5);
}
if (GUI.Button (new Rect (menu7, menu8, 100, 50), "Right")) {
transform.Translate(-Vector3.left * moveSpeed * (Time.deltaTime)*5);
}
}
using UnityEngine;
using System.Collections;
public class MovePlayer : MonoBehaviour
{
Public float speed;
void FixedUpdate ()
{
float moveHorizontal = Input.GetAxis("Horizontal"); //this code should do perfect if i understand you, it will move exactly when //you tell it to until you release the key. Please vote my answer up when you find it works
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rigidbody.AddForce(movement * speed * Time.deltaTime);
}
}
use repeatbutton
private void OnGUI(){
if (GUI.RepeatButton (new Rect (menu1, menu2, 100, 50), "UP")) {
transform.Translate(Vector3.up * moveSpeed * (Time.deltaTime)*5);
}
if (GUI.RepeatButton (new Rect (menu3, menu4, 100, 50), "DOWN")) {
transform.Translate(-Vector3.up * moveSpeed * (Time.deltaTime)*5);
}
if (GUI.RepeatButton (new Rect (menu5, menu6, 100, 50), "Left")) {
transform.Translate(Vector3.left * moveSpeed * (Time.deltaTime)*5);
}
if (GUI.RepeatButton (new Rect (menu7, menu8, 100, 50), "Right")) {
transform.Translate(-Vector3.left * moveSpeed * (Time.deltaTime)*5);
}