замена скрипта

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

замена скрипта

Сообщение LoadingBrain 03 окт 2012, 13:27

Как можно заменить вот эту строчку? что бы вместо Camera.main было что-то дугое и рейкаст выходил ровно по центру экрана?
Синтаксис:
Используется javascript
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,2.5)){
Аватара пользователя
LoadingBrain
UNец
 
Сообщения: 19
Зарегистрирован: 22 сен 2012, 16:28

Re: замена скрипта

Сообщение Good1101 03 окт 2012, 14:12

Не совсем понятен вопрос, что то другое это например что? и зачем менять если луч нужен по центру экрана?
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: замена скрипта

Сообщение LoadingBrain 03 окт 2012, 14:37

Щас сниму видос, скину посмотрите а то этот вопрос не обеснить))
Аватара пользователя
LoadingBrain
UNец
 
Сообщения: 19
Зарегистрирован: 22 сен 2012, 16:28

Re: замена скрипта

Сообщение LoadingBrain 03 окт 2012, 16:30

Вот ссылка на видео --> http://www.youtube.com/watch?v=g-vtDLmh ... e=youtu.be

Попробую обеснить проблему, при подходе к ящику со здоровьем в плотную, не появляется надпись и жизни нельзя брать а еслив чуть подальше направить то появляется.
В чём может быть проблема?
Смотрите скриншот это две камеры..
У вас нет доступа для просмотра вложений в этом сообщении.
Аватара пользователя
LoadingBrain
UNец
 
Сообщения: 19
Зарегистрирован: 22 сен 2012, 16:28

Re: замена скрипта

Сообщение LoadingBrain 03 окт 2012, 16:31

вот код
Синтаксис:
Используется javascript
var text : String = "Name";
var label : Rect;
var body : GameObject;
var hit : RaycastHit;
var guiSkin : GUISkin;

function OnGUI() {
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,2)){
if (hit.transform.tag == "HealthTag") {
if(Input.GetKeyDown(KeyCode.E)) {
Health.health +=10;
Destroy(hit.collider.gameObject);
body.SendMessage("clipsup",SendMessageOptions.DontRequireReceiver);
}
GUI.skin = guiSkin;
GUI.Label(label, "Поднять предмет (Е) - Жизни");
}
}
}  
Аватара пользователя
LoadingBrain
UNец
 
Сообщения: 19
Зарегистрирован: 22 сен 2012, 16:28

Re: замена скрипта

Сообщение Good1101 03 окт 2012, 16:39

есть мнение что когда наклоняешся луч попадает в какойто толайдер на персонаже.
попробуй добавить строчку после
if(Physics.Raycast(Camera.main.ScreenPointToRay(Vector2(Screen.width/2,Screen.height/2)),hit,2)){
Debyg.log(hit.transform.tag);
и посмотри в дебаге что будет писать.
тоесть вот
Синтаксис:
Используется csharp
  Debug.Log(hit.transform.tag)
Как тут стрелять?
Аватара пользователя
Good1101
Адепт
 
Сообщения: 1100
Зарегистрирован: 17 ноя 2011, 14:07
  • ICQ

Re: замена скрипта

Сообщение LoadingBrain 03 окт 2012, 16:45

о майгот ты прав мешало тело Playra =) блин я с таким не встречался, теперь буду знать, спасибо огромное)
Аватара пользователя
LoadingBrain
UNец
 
Сообщения: 19
Зарегистрирован: 22 сен 2012, 16:28

Re: замена скрипта

Сообщение AndreyMust19 03 окт 2012, 17:27

Пускать лучи в OnGUI = совместить медленное с тормознутым. Следует сделать так:
1) Если луч попал, то включать другой скрипт, показывающий GUI. Как только перестал попадать - выключать GUI. Луч пускать в FixedUpdate, но не каждый раз, а н-р, через 5-10 вызовов.
2) Если все время нужно пускать луч, используйте RayCaster (точно не помню как он называется, есть компонент, к-й все время пускает луч в одну точку).
3) Поменяйте условия - на первое место поставьте то, к-е выполняется реже всего. А именно - нажатие кнопки 'E'. Сейчас вы все время пускаете луч и если пользователь не нажал E - выбрасываете результат луча на свалку. Много бесполезной работы.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14