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

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

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

Сообщение Zaicheg 16 июл 2012, 21:41

Столкнулись, подарили друг другу цветы... Кто говорил, что программирование — это не романтично?
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

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

Сообщение Racot 17 июл 2012, 00:45

Левш@ писал(а):

Не копипастить код! Это всего лишь алгоритм, соблюдать синтаксис АПИ Юнити (см. Справку).


я и не собирался, по принципу пишу на шарпе да и копипастом не занимаюсь.

переделал немного :-B
только пришлось строчку
Синтаксис:
Используется csharp
temp = renderer.material.color;

перенести в Update();

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

public class Colors : MonoBehaviour {
       
        Color temp;
       
        IEnumerator Wait() {
                //Debug.Log("Start");
        yield return new WaitForSeconds(0.01f);
    }
       
       
        // Use this for initialization
        void Update () {
                temp = renderer.material.color;
       
        }
       
        void OnCollisionEnter(Collision collision) {
                if (collision.rigidbody)
                {

                collision.rigidbody.renderer.material.color = temp;
                StartCoroutine(Wait());
                //Debug.Log("CoroutineEnd");
                temp = renderer.material.color;
                //Debug.Log("temp+");
                }
        }
}

Очень спасибо всем за помощь.
+ разобрался с задержкой (пинок от Левшы :) ) по этому видео


Zaicheg писал(а):Столкнулись, подарили друг другу цветы... Кто говорил, что программирование — это не романтично?

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

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

Сообщение trololoid 17 июл 2012, 02:19

Сжечь тытрубу с видео-уроками по программированию
Аватара пользователя
trololoid
Старожил
 
Сообщения: 712
Зарегистрирован: 15 сен 2011, 19:18
Откуда: Туапсе, Краснодарский край, Россия

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

Сообщение AndreyMust19 17 июл 2012, 09:53

Наверное проблема в том что OnCollisionEnter при столкновении срабатывает на обоих объектах. Оба меняются цветом с соседом и в результате все остаются со своим цветом. Чтобы цвет менял только кто-то один, попробуйте вставить какое-нибудь условие, которое гарантированно сработает только для одного из столкнувшихся объектов. Например, меняйте цвет только если собственный цвет меньше того, с кем столкнулись.

Вот вам скрипт, у меня работает:

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

public class ExchangeColor : MonoBehaviour {

        Vector4 color1, color2;
       
        void OnCollisionEnter(Collision other) {
                if (other.rigidbody)
                {
                        color1 = (Vector4) renderer.material.color;
                        color2 = (Vector4) other.gameObject.renderer.material.color;
                        if (color1.sqrMagnitude > color2.sqrMagnitude) {
                                // меняем
                                color1 += color2;
                                color2 = color1 - color2;
                                color1 = color1 - color2;
                                // ставим
                                Debug.Log("Exchange Color");
                                renderer.material.color = (Color) color1;
                                other.gameObject.renderer.material.color = (Color) color2;
                        }
                }
        }
       
}
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

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

Сообщение Racot 17 июл 2012, 11:00

AndreyMust19 писал(а):Наверное проблема в том что OnCollisionEnter при столкновении срабатывает на обоих объектах. Оба меняются цветом с соседом и в результате все остаются со своим цветом.

Бинго :) Такое было, проблема решена задержкой и Temp.

AndreyMust19 писал(а): Вот вам скрипт, у меня работает:

Интересная реализация, буду разбираться (popcorn) (у меня прям руки зачесались)

trololoid писал(а):Сжечь тытрубу с видео-уроками по программированию

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

Пред.

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

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

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