Обмен цветами при столкновении

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

Обмен цветами при столкновении

Сообщение Racot 13 июл 2012, 17:24

Собственно вопрос
Есть два шара(Rigid Body), синего и красного цвета соответственно. При столкновении нужно чтобы они обменялись цветами. Поигрался с функциями OnCollision
но желаемого результата не добился. Возможно [curved_hands] , незнаю.
Буду благодарен за помощь в этом вопросе
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение Левш@ 13 июл 2012, 18:31

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

Re: Обмен цветами при столкновении

Сообщение Kayler 13 июл 2012, 18:54

Левш@ писал(а):OnTriggerEnter()
Потом сохраняеш цвета в временные переменные и соответственно присваиваешь.

может OnCollisionEnter ?
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Обмен цветами при столкновении

Сообщение Racot 13 июл 2012, 19:27

Не могу понять как сделать все одновременно

Синтаксис:
Используется csharp
void OnCollisionEnter(Collision collision) {
        if (collision.rigidbody)
                {
                        MyParticles = Instantiate (Particles, transform.position, Quaternion.identity) as GameObject;
                        MyParticles.name = "Fire";
                        Destroy(MyParticles,1);

                        renderer.material.color = collision.rigidbody.gameObject.renderer.material.color;
                        //other.rigidbody.gameObject.renderer.material.color = renderer.material.color;
                }
       
    }
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение seaman 13 июл 2012, 19:32

Читать умеем?
временные переменные
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Обмен цветами при столкновении

Сообщение Racot 13 июл 2012, 19:40

seaman писал(а):Читать умеем?
временные переменные

Не могу понять Логику. Ладно, на свежую голову сделаю
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение seaman 13 июл 2012, 19:58

Ну блин!
Синтаксис:
Используется csharp
Color temp =  renderer.material.color;
renderer.material.color = collision.rigidbody.gameObject.renderer.material.color;
collision.rigidbody.gameObject.renderer.material.color = temp;

Элементарно же!
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Обмен цветами при столкновении

Сообщение Racot 13 июл 2012, 20:56

seaman писал(а):Ну блин!
Синтаксис:
Используется csharp
Color temp =  renderer.material.color;
renderer.material.color = collision.rigidbody.gameObject.renderer.material.color;
collision.rigidbody.gameObject.renderer.material.color = temp;

Элементарно же!


Не работает.
Не все так элементарно
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение seaman 13 июл 2012, 21:09

Что не работает?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Обмен цветами при столкновении

Сообщение Racot 13 июл 2012, 21:14

seaman писал(а):Что не работает?

При столкновении шары не обмениваются цветами
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение seaman 13 июл 2012, 21:38

Патиклы создаются?
Вообще учитесь отлаживать. Используйте дебаг сообщения, чтобы понять как работает скрипт.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Обмен цветами при столкновении

Сообщение Racot 16 июл 2012, 17:43

Проблему с тремя разноцветными шариками решил с помощью:

1. Накинутого скрипта на Желтый шар
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class EneMyMatYellow : MonoBehaviour {
        public GameObject Particles;
        private GameObject MyParticles;

       
void OnCollisionEnter(Collision collision) {
        if (collision.rigidbody)
                {
                        MyParticles = Instantiate (Particles, transform.position, Quaternion.identity) as GameObject;
                        MyParticles.name = "Fire";
                        Destroy(MyParticles,1);

                        Color MyTemp = renderer.material.color;
                        Debug.Log("Temp add");
                        renderer.material.color = collision.rigidbody.gameObject.renderer.material.color;
                        collision.rigidbody.gameObject.renderer.material.color = MyTemp;
                }
       
 



2. Накинутого скрипта на красный шар и и добавив таг Enemy на красный и синий шары, чтобы исключить Жейтый шар

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

public class EneMyMatRed : MonoBehaviour {
        public GameObject Particles;
        private GameObject MyParticles;

       
void OnCollisionEnter(Collision collision) {
        if (collision.rigidbody)
                {
                        MyParticles = Instantiate (Particles, transform.position, Quaternion.identity) as GameObject;
                        MyParticles.name = "Fire";
                        Destroy(MyParticles,1);
                        if (collision.rigidbody.tag == "Enemy")
                        {
                        Color MyTemp = renderer.material.color;
                        Debug.Log("Temp add");
                        renderer.material.color = collision.rigidbody.gameObject.renderer.material.color;
                        collision.rigidbody.gameObject.renderer.material.color = MyTemp;
                        }
                }

    }
}
 


3. Синий шар оставил пустым

Но, блин это (полная Ж), когда добавляю новый цвет вся система рушится.
Подскажите, как сделать универсальный скрипт для большего количества цветов?
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение seaman 16 июл 2012, 18:27

1. Чем это отличается от того что я писал, и что у Вас якобы не работало?
2. Это действительно (полная Ж) - абсолютно одинаковые скрипты называть разными именами в зависимости от того на какой объект кидаешь.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Обмен цветами при столкновении

Сообщение Racot 16 июл 2012, 18:42

seaman писал(а):1. Чем это отличается от того что я писал, и что у Вас якобы не работало?

Это были мои погрешности.

seaman писал(а):2. Это действительно (полная Ж) - абсолютно одинаковые скрипты называть разными именами в зависимости от того на какой объект кидаешь.

Знаю. Может вы чем-то поможете? Хочу разобраться во всем этом подробнее.
Аватара пользователя
Racot
UNIт
 
Сообщения: 69
Зарегистрирован: 25 фев 2011, 17:41
Откуда: Украина, г.Ровно

Re: Обмен цветами при столкновении

Сообщение Левш@ 16 июл 2012, 19:20

может OnCollisionEnter ?

В данном случае без разницы...

Не могу понять Логику.

Синтаксис:
Используется javascript
var tempColorBufer : Color;

function Start () {
    tempColorBufer = material.color;
}
function OnTriggerEnter (other : Collider) {
    other.material.color = tempColorBufer;
    yield WaitForSeconds (0.1); // на всякий случай, чтоб 2 скрипта успели сработать.
    tempColorBufer = material.color;
}
 

Не копипастить код! Это всего лишь алгоритм, соблюдать синтаксис АПИ Юнити (см. Справку).
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

След.

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

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

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