2015-10-23 5 views
0

В единстве3d Я раюстаю от игрока вперед. Но я хочу также раистать под углом. Я стараюсь этоRaycast в направлении угла

var dir = this.transform.TransformDirection(new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle))); 
Physics.Raycast(this.transform.position, -dir, out hit, 9999); 

Но получить неверный результат.

+0

Какой результат вы получаете? Как это отличается от результата, который вы хотите? – rutter

ответ

2

Учитывайте, что с помощью значения TransformDirection направления, которое будет использоваться в raycasted, сравнивается с преобразованием сценария. Если вы установите угол на ноль, он будет стрелять в raycast в прямом направлении, к которому привязан сценарий. Если вы хотите сделать raycast независимой от которой сталкивается только преобразование делать Dir так:

var dir = new Vector3(Mathf.Sin(angle), 0, Mathf.Cos(angle)); 

принимать также в виду, что блок ваш угол? Mathf.Sin и Mathf.Cos принимают значение угла в радианах, если вы хотите использовать углы в градусах (0, 90, 180, 270), вам нужно преобразовать их в радианы перед вычислением Sin и Cos. Для этого просто умножьте, если с помощью Значение Rad/Deg:

angle = angle * Mathf.Deg2Rad; 

И сделайте все, как раньше. Чтобы помочь вам больше, мне нужно, чтобы вы предоставили больше информации (результаты тестов, что вы хотите уточнить ...).