2015-09-14 2 views
-1

Я должен рандомизировать вектор3 между -переменной и переменной по оси X и Y. Поэтому ось Z направлена ​​вперед, и мне нужно найти случайный вектор3 в круге вокруг этого вектора, но все это в локальном пространстве. Создание vector3 и добавление его в локальное пространство - плохая идея. enter image description here Игрок может ходить и вращаться вокруг оси Y, а лицо может перемещаться вокруг оси X.Unity3D random vector3 в локальном пространстве

+2

Я не могу понять, чего вы хотите достичь. – Skyblade

+1

Проверьте ['TransformVector'] (http://docs.unity3d.com/ScriptReference/Transform.TransformVector.html) и друзья. Они могут помочь вам преобразовать ваш случайный вектор между пробелами. Как ваш вопрос стоит, очень неясно, какие пространства вы хотите. (И уже есть много ответов, как делать случайные векторы.) – 31eee384

+0

Добавлена ​​картинка, ясно ли это сейчас? – Konowy

ответ

1

это то, что вы хотите?

Camera cam = Camera.main; 
float distance = 1000f; 
float tolerance = 1f; 
vector3 offset = cam.transform.forward * distance; 
Vector3 direction = (offset + new Vector3(Random.Range(0f, tolerance),Random.Range(0f, tolerance), 0f)).normalized; 

Ray lineOfSight = new Ray(cam.transform.position, direction); 
+0

Это просто создайте луч между центром мира и моей камерой сейчас ... – Konowy

+0

'cam' должен быть камерой с изображением' игрока' – maksymiuk

+0

@LOLslowSTi Я думаю, что у Konowy нет просмотра с первого взгляда , и ожидает, что луч исходит от вектора вперед персонажа. Все, что вам нужно сделать, чтобы принять это, - удалить каждую «кулачку», чтобы использовать «преобразование» текущего объекта. – 31eee384