Question by
k234234w · Feb 10, 2016 at 09:18 PM ·
uiui imagerecttransform
Moving UI Image
I am not sure how to go about moving canvas elements via script. I have a little glow bug that is an image within my canvas, with a script attached. If the glow bug was not in the canvas and i was moving it with the script it would work. The script for gameplay glow box movement( I just want it to float around in a "box" basically).
using UnityEngine;
using System.Collections;
/// <summary>
/// Fly movement.
/// This script establishes a very simple movement for the fly sprite
/// A random position will be calculated and the fly will move towards it
/// The fly will remain bounded within a x y perimeter and a new position
/// will be calculated within a timer interval
/// </summary>
//*********************************************
public class flyMovement : MonoBehaviour
{
//Bounds that the fly will stay in
//*************************
public float maxX = 0.5f;
public float minX = -0.5f;
public float maxY = 0.5f;
public float minY = -0.5f;
//*************************
//The time it takes to calculate a new random position the fly will move towards
private float tChange = 0f; // force new direction in the first Update
//Coordinates we will move towards
private float randomXCoord;
private float randomYCoord;
//How fast to move
public float moveSpeed = 0.1f;
private RectTransform Rect;
void Start()
{
Rect = this.gameObject.GetComponent<RectTransform> ();
}
private void Update ()
{
// Change to random direction at random intervals
// Should step into on the first update
if (Time.time >= tChange)
{
//Generate an x and y value in the range below
randomXCoord = Random.Range(-2.0f,2.0f); // with float parameters, a random float
randomYCoord = Random.Range(-2.0f,2.0f); // between -2.0 and 2.0 is returned
// set a random interval between 0.5 and 1.5
tChange = Time.time + Random.Range(0.5f,1.5f);
}
//Translate to
Vector3 translateVec = new Vector3 (randomXCoord, randomYCoord, 0.0f) * moveSpeed * Time.deltaTime;
transform.Translate(translateVec);
//Position bounding
//***************************************************************
// if object reached any border, revert the appropriate direction
if (transform.position.x >= maxX || transform.position.x <= minX)
{
//Flip it so it goes in the opposite x direction
randomXCoord = -randomXCoord;
}
if (transform.position.y >= maxY || transform.position.y <= minY)
{
//Flip it so it goes in the opposite y direction
randomYCoord = -randomYCoord;
}
// make sure the position is inside the borders
float xCoord = Mathf.Clamp(transform.position.x, minX, maxX);
float yCoord = Mathf.Clamp(transform.position.y, minY, maxY);
Vector3 tempVec = new Vector3 (xCoord, yCoord, transform.position.z);
transform.position = tempVec;
//**************************************************************
}
}
I am not sure what to do with the rect transform. Does anyone know how to modify the above script in order to work with the glowbug being an image within the canvas?
Comment