- Home /
Attach image to button
Hi all,
I have a script that controls to rotation of the camera around a target on the click of a button. I would like to attach the buttons that work to some custom images, but every bit of code I try will break the camera rotation.
This is my script at the moment.
using UnityEngine;
using System.Collections;
public class CameraRotate: MonoBehaviour { public Transform target; public float distance = 20.0f; public float zoomSpd = 2.0f;
public float xSpeed = 240.0f;
public float ySpeed = 123.0f;
public int yMinLimit = -723;
public int yMaxLimit = 877;
private float x = 0.0f;
private float y = 0.0f;
private float GUIHorizontal = 0;
private float GUIVertical = 0;
public void Start () {
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
void OnGUI() { if(Event.current.type == EventType.Repaint) { GUIHorizontal = 0; GUIVertical = 0;
}
GUILayout.BeginHorizontal();
if(GUILayout.RepeatButton("RotateLeft"))
{
GUIHorizontal = -1;
}
if(GUILayout.RepeatButton("RotateRight"))
{
GUIHorizontal = 1;
}
GUILayout.EndHorizontal();
}
public void LateUpdate () {
if (target) {
x -= GUIHorizontal * xSpeed * 0.02f;
y += GUIVertical * ySpeed * 0.02f;
y = ClampAngle(y, yMinLimit, yMaxLimit);
distance -= Input.GetAxis("Fire1") *zoomSpd* 0.00f;
distance += Input.GetAxis("Fire2") *zoomSpd* 0.00f;
Quaternion rotation = Quaternion.Euler(y, x, 0.0f);
Vector3 position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
public static float ClampAngle (float angle, float min, float max) {
if (angle < -360.0f)
angle += 360.0f;
if (angle > 360.0f)
angle -= 360.0f;
return Mathf.Clamp (angle, min, max);
}
}
and this is what the viewport shows, the unity images representing where the custom image buttons will go.
Can anyone shed any light on how to place and use an image for the button.
Thanks :)
-j
Answer by ScroodgeM · Aug 31, 2012 at 11:18 PM
in class block:
public Texture2D TextureLeft; public Texture2D TextureRight;
in OnGUI()
GUILayout.BeginVertical(); GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); if(GUILayout.RepeatButton(TextureLeft)) { GUIHorizontal = -1; } GUILayout.FlexibleSpace(); if(GUILayout.RepeatButton(TextureRight)) { GUIHorizontal = 1; } GUILayout.EndHorizontal(); GUILayout.EndVertical();
Your answer
Follow this Question
Related Questions
pan camera by touch / gui button 0 Answers
Making GUI Buttons on a GUI Texture 1 Answer
Camera rotation - button emulation 0 Answers
Clicking Trigger 1 Answer
Script for a GUI button to change an object's rotation? 1 Answer