Я программист Java, и я новичок в Unity. Я пишу сетку, которая лежит на объекте Plane. Цель состоит в том, чтобы отделить логику на основе сетки от системы координат Unity 3D. На самом деле игра говорит о позиции сетки, поэтому мне нужен код, который преобразует систему координат игры в/form систему координат Unity (мировая позиция). Поскольку положение объекта Plane может быть изменено (повернуто, перемещено и т. Д.), Я хочу «отметить» левый нижний угол плоскости. В этом случае я смогу преобразовать одну систему координат в другую в любое время, так как с точки зрения игры координата «маркер в игре» равна 0,0 (2D). К сожалению, мой код не работает.Unity 3D. Детский объект не изменен
Не могли бы вы сказать мне, что не так (свойства «маркера» не меняются при перемещении плоскости)?
public class GridManager: MonoBehaviour {
GameObject ground;
GameObject marker;
...
void attachMarker() {
//get substrate (plane)
GameObject ground = getGround();
//create marker
GameObject marker = new GameObject();
//set marker position to left bottom corner
marker.transform.position.x = ground.transform.position.x - ground.transform.localScale.x/2;
marker.transform.position.z = ground.transform.position.z - ground.transform.localScale.z/2;
marker.transform.position.y = 0;
//set marker size
marker.transform.localScale = new Vector3(0,0,0);
//set marker name (will be used for search)
marker.name = "LB_Marker";
//set marker to be child of ground
marker.transform.parent = ground.transform;
//store it
this.marker = marker;
}
}
Почему вы масштабируете маркер до 0,0,0? – joreldraw
Ваш код кажется esentialy ok. Как вы двигаетесь в самолете? Вы проверяете свойства маркера во время работы проекта? – xpereta
1. Почему вы масштабируете маркер до 0,0,0 С моей точки зрения маркер является точкой. У меня нет проблем с получением этой позиции. 2. Проверяете ли вы свойства маркера во время работы проекта? Да. С помощью отладочной печати и тестового сценария, которые изменяют положение Plane на Update. –