- Home /
Question by
CreepaBob · Nov 26, 2021 at 01:17 AM ·
transformtransform.position
Button not moving to the proper position relative to the canvas?
I'm trying to create an algorithm that can take x points and determine their positions so that they're both equidistant from the center of a circle, and equidistant from each other. I have the algorithm working, and it returns the proper positions, but when I move elements to those positions, they move relative to the world origin instead of relative to the canvas origin. The elements are organized properly but in the wrong spot. Even more interestingly, when I drag the buttons out of the canvas and back into it, they end up in the proper spot inside the canvas, exactly where they should've ended up.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClassSelect : MonoBehaviour
{
List<string> points = new List<string>();
public float angle;
public float rad;
public float speed = 10f;
public float x;
public float y;
public float fraction;
public int radius = 100;
public GameObject center;
public GameObject child;
public Transform goPoint;
public Vector3 start;
public Vector3 dest;
void Update() {
if (Input.GetKeyDown(KeyCode.E))
{
foreach (Transform item in center.transform){
points.Add(item.name);
}
foreach (string i in points){
angle = 360/points.Count;
rad = angle * points.IndexOf(i) * Mathf.Deg2Rad;
x = Mathf.Round(radius * Mathf.Sin(rad));
y = Mathf.Round(radius * Mathf.Cos(rad));
lerping(x, y, points.IndexOf(i));
}
}
}
void lerping(float x, float y, int childIndex) {
print("X: " + x.ToString() + " Y: " + y.ToString() + " Child Index: " + childIndex.ToString());
child = center.transform.GetChild(childIndex).gameObject;
print(child.name);
dest.x = x;
dest.y = y;
child.transform.position = new Vector3(dest.x, dest.y, start.z);
}
}
If anyone knows why the objects are moving to the world origin instead of canvas origin, that would be greatly appreciated!
Comment