parent декали к динамическому объекту

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

parent декали к динамическому объекту

Сообщение garrybaldy 29 окт 2012, 16:35

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

public class Decal : MonoBehaviour
{
        public GameObject decalPrefab;
       
        void Start ()
        {      
        }
        void Update ()
        {
        RaycastHit hit;
               
                if (Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), out hit))
                {      
                        if (hit.collider.tag == "DecalOn" && Input.GetMouseButtonDown(0)){
                                var decal = Instantiate(decalPrefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal));
                                decal.transform.parent = hit.transform;
}
                }
        }
}


Подскажите как исправить ошибку?
garrybaldy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2011, 00:01
Откуда: Питер

Re: parent декали к динамическому объекту

Сообщение Левш@ 29 окт 2012, 17:48

1. В аргументах райкаста не заданы направление и расстояние.
2. Сомневаюсь что успеете нажать кнопку мыши в момент попадания. :) а иначе условие не сработает.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: parent декали к динамическому объекту

Сообщение Receptor 29 окт 2012, 19:39

Вообще вроде все верно написанно. Автор, а что именно не так работает?
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: parent декали к динамическому объекту

Сообщение garrybaldy 29 окт 2012, 21:57

Этот скрипт работает без (var decal =) и (decal.transform.parent = hit.transform; )для неподвижных объектов.
Задача в том, чтобы декаль присоединилась к движущемуся объекту.
Далее рабочий скрипт для неподвижных объектов:
Синтаксис:
Используется csharp

using UnityEngine;
using System.Collections;

public class Decal : MonoBehaviour
{
        public GameObject decalPrefab;
       
        void Start ()
        {      
        }
        void Update ()
        {
        RaycastHit hit;
               
                if (Physics.Raycast(camera.ScreenPointToRay(Input.mousePosition), out hit))
                {      
                        if (hit.collider.tag == "DecalOn" && Input.GetMouseButtonDown(0)){
                                Instantiate(decalPrefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal));
                               
}
                }
        }
}

 

Как присоединить декаль к движущемуся объекту???
garrybaldy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2011, 00:01
Откуда: Питер

Re: parent декали к динамическому объекту

Сообщение Receptor 29 окт 2012, 22:50

Ну так Вы вроде все верно сделали, указываешь родителя и порядок. А что она просто остается на том же месте? Чем передвигаете ваш объект, к которому хотите прилепить декаль, трансформом, ригидбоди или character controller может?
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: parent декали к динамическому объекту

Сообщение Receptor 29 окт 2012, 22:53

Кстати, только сейчас увидел, постарайтесь избегать использование var, если пишете на (c#) , и вообще эта штука для методов придумана, насколько мне известно. Попробуйте поменять это:

Синтаксис:
Используется csharp
var decal = Instantiate(decalPrefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal));
                                decal.transform.parent = hit.transform;
 


на это:

Синтаксис:
Используется csharp
GameObject decal = Instantiate(decalPrefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)) as GameObject;
decal.transform.parent = hit.gameObject.transform;
 
_VK.com
Аватара пользователя
Receptor
Адепт
 
Сообщения: 1706
Зарегистрирован: 22 ноя 2011, 07:09
Откуда: Волгодонск

Re: parent декали к динамическому объекту

Сообщение garrybaldy 31 окт 2012, 06:01

спасибо! Работает с одной поправкой. В последней строке надо удалить gameObject в hit.
Синтаксис:
Используется csharp
GameObject decal = Instantiate(decalPrefab, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal)) as GameObject;
decal.transform.parent = hit.transform;
garrybaldy
UNец
 
Сообщения: 8
Зарегистрирован: 04 июн 2011, 00:01
Откуда: Питер


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

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

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