Ограничение области движения ускорителя в Unity - PullRequest
0 голосов
/ 02 октября 2018
void Update(){
    float accel = Input.acceleration.x;
    transform.Translate(accel, 0, 0);
}

Выше приведен мой текущий код управления акселератором в моей игре.Я хочу иметь возможность наклонять телефон влево и вправо, и персонаж будет двигаться влево и вправо.Код работает нормально, но персонаж выходит за пределы экрана.Я попробовал Mathf.Clamp на значении ускорения, а также попытался зафиксировать transform.position, но ни одна из них не сработала, и, похоже, просто изменил скорость управления акселерометром.

Мне нужен способ динамического ограничения движения символов в любомРазмер экрана.

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Возможно, вы могли бы установить коллайдеры как триггеры рядом с дорожкой и установить переменную акселератора в 0, если объект касается триггера

0 голосов
/ 02 октября 2018

Если я правильно понимаю вопрос, вы хотите, чтобы объект был зажат в видимой области.Для этого вы можете использовать видовой экран.

Vector3 pos = this.transform.position;
Vector3 viewportPos = Camera.main.WorldToViewportPoint(pos);
if (viewportPos.x < 0f) Camera.main.ViewportToWorldPoint(new Vector3(0f, pos.y, pos.z));
else if (viewportPos.x > 1f) Camera.main.ViewportToWorldPoint(new Vector3(1f, pos.y, pos.z));
...