В этой статье я хочу познакомить вас с одним методом в Unity 5, с помощью которого можно перемещать любые предметы в пространстве относительно оси координат. Этот метод называется transform.Translate. Давайте посмотрим на практике как это работает. Я буду перемещать кубы с разной скоростью, которая генерируется рандомно для каждого куба.
Создадим две плоскости и между ними сделаем небольшое расстояние (как пропасть), над ними создадим несколько кубов в виде ступеней, по которым можно перейти с одной стороны на другую.

Добавим С# скрипт назовем его speed и напишем в нем такой код:
using UnityEngine;
using System.Collections;
public class speed : MonoBehaviour {
public float speedV; //добавим числовую переменную, скорость
void Start () {
speedV = Random.Range(0.5f, 3); // при старте зададим диапазон скорости от 0.5 до 3
}
void Update () {
transform.Translate(0, 0, speedV * Time.deltaTime); // наш метод, нам нужно движение по оси координат z
if (transform.position.z > 2){ // ограничение, если позиция куба по оси з больше 2, то куб будет двигаться в обратную сторону
speedV = -speedV;
}
if (transform.position.z < -5) { // если меньше -5, то скорость опять принимает рандомное значение
speedV = Random.Range(0.5f, 3);
}
}
}Таким образом наши кубы зациклятся в движении и будут двигаться все время с разной скоростью.
Переместим скрипт на каждый куб и смотрим что получилось. При необходимости можно изменить строку
transform.Translate(0, 0, speedV * Time.deltaTime)//z
и изменить направление движения кубов.
transform.Translate(speedV * Time.deltaTime, 0, 0)//x
transform.Translate(0,speedV * Time.deltaTime, 0)//y
Этот метод можно широко применять как в создании 2d игр, создавать различные препятствия, движение предметов, мобов и многое другие, так и применять в 3d играх. Удачных проектов!








