Переместить объект в Unity (у меня это квадрат) по оси X на длину стороны этого квадрата?
Как я могу переместить объект в Unity (у меня это квадрат) по оси X на длину стороны этого квадрата? Пробовал писать следующее, но в консоли вижу "width: 0 height: 0"
public class Player : MonoBehaviour
{
public float speed;
private Vector2 targetPosition;
private float width;
private float height;
public Vector3 size;
private MeshRenderer renderer;
private Bounds bounds;
// Start is called before the first frame update
void Start()
{
bounds = renderer.bounds;
}
// Update is called once per frame
void Update()
{
width = bounds.size.x;
height = bounds.size.y;
print("width: "+width+" height: "+height);
if (Input.GetKey(KeyCode.A))
{
// rigid.velocity = Vector2.left * force;
targetPosition = new Vector2(transform.position.x + width, transform.position.y);
}
else if (Input.GetKey(KeyCode.D))
{
// rigid.velocity = Vector2.right * force;
targetPosition = new Vector2(transform.position.x - width, transform.position.y);
}
transform.position = targetPosition;
}
}
Ответы (2 шт):
Автор решения: ssa112112
→ Ссылка
Возможно, стоит работать не с вакуумом, а с конкретным компонентом, добавив в метод start такую строчку:
renderer = GetComponent<MeshRenderer>();
Вот ответ объяняющий работу GetComponent: Зачем в методах писать GetComponent?
Автор решения: goo
→ Ссылка
Ну если нужен именно mesh, то можно так к примеру
- повесить на объект mesh filter, в поле mesh выбрать квадрат
- повесить mesh renderer, чтобы все видеть
естественно можно задать свой mesh задав месторасположение всех вершин и прочего вручную со своими прибамбасами, первые два пункта, это чисто вариант по умолчанию, для теста. Чтобы была хоть какая-то наглядность.
using UnityEngine;
public class SomeClass : MonoBehaviour
{
private new MeshRenderer renderer;
private float width;
private void Awake()
{
renderer = GetComponent<MeshRenderer>();
width = renderer.bounds.size.x;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
var position = transform.position;
var x = position.x;
var y = position.y;
var newPosition = new Vector2(x + width, y);
transform.position = newPosition;
}
}
}