|
Unity Мультиплатформенный инструмент для разработки игр |
02.03.2011, 08:58
|
#346
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
По первому вопросу разобрался, спасибо.
По второму:
using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {
void OnTriggerStay(Collider other) {
if (other.attachedRigidbody)
other.attachedRigidbody.AddForce(Vector3.up * 10);
}
}
А если у меня коллайдер не ригидбоди?
|
(Offline)
|
|
02.03.2011, 10:19
|
#347
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от Andvrok
А если у меня коллайдер не ригидбоди?
|
В функцию передается коллайдер, находящийся в триггере, по нему можно получить GameObject или другой компонент этого объекта. Вот с ними и выполняйте операцию снижения здоровья.
Справка для примера, в ней что-то типа эффекта воздушной подушки или вентилятора вверх описано. Это не значит, что надо делать все как в примере.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.03.2011, 15:19
|
#348
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Опробовал способ с OnTriggerStay - ничего не получилось. Для проверки кода создал сферу-триггер, прицепил ей тот же скрипт - все работает как надо. Видимо для партиклов нужен особый подход..
|
(Offline)
|
|
02.03.2011, 15:36
|
#349
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Ну все правильно, ставь объект пустышку со сферическим коллайдером в место костра и все. Это истинный путь джедая )
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.03.2011, 15:39
|
#350
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Повесил на партиклы скрипт
public GameObject go;
void Start () {
Instantiate(go,transform.position,transform.rotation);
}
Вроде работает
Новый вопрос теперь: как перемещать партиклы?
Последний раз редактировалось Andvrok, 02.03.2011 в 17:46.
|
(Offline)
|
|
02.03.2011, 18:05
|
#351
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Ну у каждого GO есть трансформ, если менять его позицию (transform.position) то объект будет перемещаться в пространстве...
|
(Offline)
|
|
02.03.2011, 22:14
|
#352
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Если бы все было так просто, я бы не спршивал Пытаюсь перемещать с помощью transform.Translate - результат нулевой.
|
(Offline)
|
|
02.03.2011, 22:16
|
#353
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Все достаточно просто. Скрипт перемещения висит на объекте с частицами?
|
(Offline)
|
|
02.03.2011, 22:21
|
#354
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Не совсем. Частицы создаются инстантиатом со скрипта на игроке, следовательно перемещение тоже там.
Если быть точнее - нужно реализовать 'фаерболл', создающийся инстантиатом в префабе игроке и летящий по форварду, правда как реализовать в таком случае обработку коллизии фаерболла со стеной я в непонятках
Пробовал разобрать на примере РПГ с некоторого примера, но там создается ригидбоди, а партиклы создаются уже при столкновении, но не делать же фаерболл ригидбодом?
Ригидбоди то можно толкнуть силой
|
(Offline)
|
|
02.03.2011, 22:27
|
#355
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Столкновения можно посчитать кастом. Все еще не вижу проблем. Вешайте скрипт перемещения на партиклы, туда же скрипт проверки столкновений. Лучше это в один скрипт объединить.
|
(Offline)
|
|
02.03.2011, 22:35
|
#356
|
Бывалый
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений (для 995 пользователей)
|
Ответ: Фак по Юнити.
Сообщение от pax
Столкновения можно посчитать кастом.
|
Ссылочку на референс, пожалуйста, что за касты такие.
|
(Offline)
|
|
12.03.2011, 14:46
|
#358
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: Фак по Юнити.
Возможно ли сделать такой шейдер который заменял бы в текстуре все пикселы определенного цвета (например белого r=255 g=255 b=255) на тот который указан в anyobject.renderer.material.color.
Ну или иначе говоря:
Когда мы меняем цвет через renderer.material.color вся текстура изменяет свой цвет.
А нужно, чтобы цвет изменялся только у былых пикселей.
|
(Offline)
|
|
12.03.2011, 14:52
|
#359
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
самый простой способ - сделать у текстуры альфаканал (если конечно он не используется) и значение альфы использовать для интерполирования цвета от цвета текстуры до указанного цвета. Если альфаканал используется, то можно взять еще одну текстуру, и использовать какой-то ее канал для данной задачи. Писал как-то похожий шейдер:
Shader "Masked/Diffuse" { Properties { _Color ("Color", Color) = (1,1,1,1) _MainTex ("Base (RGB)", 2D) = "white" {} _Mask ("Mask (Grayscale)", 2D) = "black" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 200 CGPROGRAM #pragma surface surf Lambert
sampler2D _MainTex; sampler2D _Mask; float4 _Color;
struct Input { float2 uv_MainTex; float2 uv_Mask; };
void surf (Input IN, inout SurfaceOutput o) { half4 c = tex2D (_MainTex, IN.uv_MainTex); float m = tex2D (_Mask, IN.uv_Mask).r; o.Albedo = (1-m)*c.rgb + m*_Color.rgb; o.Alpha = c.a; } ENDCG } FallBack "Diffuse" }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.03.2011, 15:08
|
#360
|
Разработчик
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений (для 100 пользователей)
|
Ответ: Фак по Юнити.
Спасибо Pax. Я в шейдерах ничего не смыслю.
А можно что то типа:
if(color=(255,255,255)color=materal.color;
чтобы обойтись без текстуры маски.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:50.
|