ошибка в скрипте,нужна помощь

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

ошибка в скрипте,нужна помощь

Сообщение rsxx 23 окт 2012, 13:25

Обьясните тупому(это я),почему не получается вот так:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class testV004 : MonoBehaviour {

public Vector3[] point = new Vector3 [3];
       
void  FixedUpdate (){
               
        RaycastHit hit;
                   Vector3 rayDown = point[0].transform.TransformDirection(-Vector3.up * 10);
               
           Debug.DrawRay(point[0].transform.position, rayDown, Color.green);
}
        void  OnDrawGizmos (){
        int i = 0;
        for (i = 0; i < point.Length; i++) {
                Gizmos.DrawWireSphere(transform.TransformPoint(point[i]), 1f);
        }
}
}

Цель этого кода,назначить луч зеленого цвета первой точке (point[0]),другой точке(point[1]) цвет красный и так далее,для того что бы научится манипулировать и уметь принимать данные с этих точек.Но у меня не получается ,пишет,что не возможно ковертировать выражение к типу Vector3,перевод вольный
Аватара пользователя
rsxx
UNIт
 
Сообщения: 138
Зарегистрирован: 06 сен 2012, 10:38
Откуда: Ukraine,Kharkov

Re: ошибка в скрипте,нужна помощь

Сообщение bojlahg 23 окт 2012, 13:29

Синтаксис:
Используется csharp
Debug.DrawRay(point[0].transform.position, point[0].transform.position + transform.up * 10, Color.green);
 
Мои проекты: MahJah Star Factory Cop Car Swash! Spline Editor
Аватара пользователя
bojlahg
UNIверсал
 
Сообщения: 392
Зарегистрирован: 13 авг 2011, 10:57
Откуда: Сатка
Skype: bojlahg
  • Сайт

Re: ошибка в скрипте,нужна помощь

Сообщение rsxx 23 окт 2012, 13:36

bojlahg писал(а):
Синтаксис:
Используется csharp
Debug.DrawRay(point[0].transform.position, point[0].transform.position + transform.up * 10, Color.green);
 

ошибка осталась та-же,и зачем в коде два раза point[0].transform.position?
Аватара пользователя
rsxx
UNIт
 
Сообщения: 138
Зарегистрирован: 06 сен 2012, 10:38
Откуда: Ukraine,Kharkov

Re: ошибка в скрипте,нужна помощь

Сообщение rsxx 24 окт 2012, 13:34

ну кто-то знает решение?
сам пока еще не смог решить
Аватара пользователя
rsxx
UNIт
 
Сообщения: 138
Зарегистрирован: 06 сен 2012, 10:38
Откуда: Ukraine,Kharkov

Re: ошибка в скрипте,нужна помощь

Сообщение Syberex 24 окт 2012, 13:52

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class testV004 : MonoBehaviour {

         public Transform[] point;
         
         void  FixedUpdate () {
                  RaycastHit hit;
                  Vector3 rayDown = point[0].TransformDirection(-Vector3.up * 10);
                  Debug.DrawRay(point[0].position, rayDown, Color.green);
         }

         void  OnDrawGizmos (){
                  int i = 0;
                  for (i = 0; i < point.Length; i++) {
                          Gizmos.DrawWireSphere(transform.TransformPoint(point[i].position), 1f);
                  }
         }
}
 

Массив надо инициализировать в инспекторе!
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: ошибка в скрипте,нужна помощь

Сообщение rsxx 24 окт 2012, 14:28

огромное спасибо!!! :ymparty:
пока горячо,попробую бить дальше :D
как мне теперь написать следующее:
если hit.distance (дистанция) точек {0,1} point[0],[1] ,будет равна 30 то вывести на экран "2 точки", а если дистанция точки point[2], то вывести на экран "точка 3"?
огромная просьба,даже на ногах скрестил пальцы ^:)^
Аватара пользователя
rsxx
UNIт
 
Сообщения: 138
Зарегистрирован: 06 сен 2012, 10:38
Откуда: Ukraine,Kharkov

Re: ошибка в скрипте,нужна помощь

Сообщение Syberex 24 окт 2012, 14:32

если hit.distance (дистанция) точек {0,1} point[0],[1] ,будет равна 30 то вывести на экран "2 точки", а если дистанция точки point[2], то вывести на экран "точка 3"?

Я не понял, как то другому объясни :-\
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: ошибка в скрипте,нужна помощь

Сообщение rsxx 24 окт 2012, 15:04

сейчас я имею 4 точки из которых идут 4 луча,как получить результат столкновения лучей с чем либо,например есть такой код:
Синтаксис:
Используется csharp
if (Physics.Raycast (ray,out hit)){
if(hit.collider){
Debug.Log(hit.distance);

Как применить это условие к одному элементу массива и к нескольким элементам в другом условии?
Вопрос только к написанию кода и обращению к элементам массива
Аватара пользователя
rsxx
UNIт
 
Сообщения: 138
Зарегистрирован: 06 сен 2012, 10:38
Откуда: Ukraine,Kharkov

Re: ошибка в скрипте,нужна помощь

Сообщение Syberex 24 окт 2012, 15:10

Надо либо в цикл завернуть...

Или хочется проверить, что все лучи попали в один и тот же коллайдер?
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: ошибка в скрипте,нужна помощь

Сообщение rsxx 24 окт 2012, 16:06

хочется проверить какой в какой(тафтология) коллайдер попал,то есть завернуть все цикл и проверять их
Аватара пользователя
rsxx
UNIт
 
Сообщения: 138
Зарегистрирован: 06 сен 2012, 10:38
Откуда: Ukraine,Kharkov

Re: ошибка в скрипте,нужна помощь

Сообщение Syberex 24 окт 2012, 21:53

Так в цикле например
Синтаксис:
Используется csharp
public Transform[] point;

void Update() {
Ray[] rays = ......;    // как будут заданы лучи???
RaycastHit hit;
float minDistance = 1000000f;
RaycastHit minHit;

for (int i = 0; i < point.Length; i++) {
    if (Physics.Raycast(rays[i], out hit)) {
        if(hit.collider) {
            Debug.Log(hit.distance);
            if (Vector3.Distance(hit.distance < minDistance)
                minDistance = hit.distance;    // находим расстояние до ближайшего коллайдера
                minHit = hit;    // ближайший выбитый коллайдер
            // ... другие действия
        }
    }
}
}
 
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт


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

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

Сейчас этот форум просматривают: Google [Bot] и гости: 24