Вторник, 26 Ноября 2024, 11:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Тени
madsenДата: Воскресенье, 18 Января 2015, 22:05 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Есть спрайты, 32x32 каждый.
Как сделать так, что-бы 1 слой спрайтов был виден, а это-же спрайты что под-ними не было бы видно пока не уничтожится верхний?
Этакая тень.
Сам не додумаюсь. Расчитываю на вас! smile cry
+ С меня wink

Добавлено (18 января 2015, 22:05)
---------------------------------------------
Не совсем тени, я имел ввиду зона которую я не вижу
Она должна быть тоже в 32х32
dry


ScirrA ConstrucT
-------------------------
Unity 3D
-------------------------
Crytek Engine 3
-------------------------
Unreal Development Kit
_ToBe_Дата: Понедельник, 19 Января 2015, 00:35 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
что-то не совсем понял... можно как-то более развёрнуто?
ZealotДата: Понедельник, 19 Января 2015, 01:35 | Сообщение # 3
был не раз
Сейчас нет на сайте
Тоже не совсем понимаю, в чем проблема.

Верхние спрайты расположены в той же точке, что и нижние? Тогда вторых по умолчанию не видно, т.к. на них налагаются первые, полностью закрывая.
Спрайты естественно следует разместить на разных слоях.
Если речь о видимости именно, и притом нижние спрайты видны за верхними (частично выглядывают), то надо просто поставить изначальное свойство нижних спрайтов "invisible on start". И менять его при уничтожении верхних через event.
Но я никак не допру, при чем здесь тень)
P.s.: кстати, тебе необязательно иметь сразу оба спрайта на уровне, если они не должны быть видимы одновременно. Можно спавнить один объект при уничтожении другого в любую точку.
Nick_RimerДата: Понедельник, 19 Января 2015, 17:35 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Если один объект должен быть жёстко привязан к другому, в констракте ещё со времён классика есть такой метод, как Always -> Position to another object
Надеюсь, я не соврал с названиями, как-то так всё это там называется. Координаты ведомого объекта постоянно привязываются к координатам ведущего. Если объект на нижнем слое прикрепить к объекту на верхнем слое, а при этом он ещё будет и меньше по размерам, то его гарантированно не будет видно. Не это ли цель? Кстати, не обязательно совать их на разные слои. Можно один из объектов расположить ближе или дальше в пределах одного слоя (если это удовлетворяет условиям задачи, конечно)
Если я верно помню, и в С2 можно совершить такой же манёвр.

Такая техника применяется в первом уроке «платформер за пять минут», полезно вспомнить.
Если нужно что-то другое, очевидно, я не понял поставленной проблемы.



- Доброе утро, Агент Пи!

Сообщение отредактировал Nick_Rimer - Понедельник, 19 Января 2015, 20:16
madsenДата: Понедельник, 19 Января 2015, 22:10 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
biggrin
Вот. http://s1.uploadpics.ru/images/bJr1bJoAK.png Нижний спрайт должен быть ПОНОСТЬЮ черным пока сверху него первый...
Когда уничтожу верхний - темнота на 1 пропадет!
Но проблема в том что будет очень много этих спрайтов.


ScirrA ConstrucT
-------------------------
Unity 3D
-------------------------
Crytek Engine 3
-------------------------
Unreal Development Kit
_ToBe_Дата: Вторник, 20 Января 2015, 02:11 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Можно через анимацию сделать
If [sprite1] > Destroy
-> [Sprite2] Change Animation > NOT Black
ZealotДата: Вторник, 20 Января 2015, 09:09 | Сообщение # 7
был не раз
Сейчас нет на сайте
Цитата _ToBe_ ()
Можно через анимацию сделать
If [sprite1] > Destroy
-> [Sprite2] Change Animation > NOT Black

Думаю, достаточно добавить в кубик второй фрейм и сделать для спрайта Animations -> Set frame.
Мы ведь достоверно не знаем, что нужны именно анимации. Может, картинки статичны (1 кадр каждого типа).

А вообще, методов решения очень много. Но в каждом могут возникнуть нюансы в зависимости от общей картины. Например, от того, сколько вообще квадратов будет на экране, будет ли множество ситуаций, когда над одним квадратом другой и т.д.
madsenДата: Вторник, 20 Января 2015, 10:43 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Я же описал все dry
Но кое-что всетаки забыл.
Кадров много у спрайтов. Я думал оттельный спрайт вообще делать. Но вы про какую-то анимацию.
Проблема не решена еще wink


ScirrA ConstrucT
-------------------------
Unity 3D
-------------------------
Crytek Engine 3
-------------------------
Unreal Development Kit
ZealotДата: Вторник, 20 Января 2015, 11:18 | Сообщение # 9
был не раз
Сейчас нет на сайте
Речь о том, что:
1) Если у объекта не меняются физические свойства, то достаточно изменить лишь его внешний вид событием (добавить ему новую анимацию).
Насколько мне известно, C2 не позволяет менять яркость спрайта, следовательно не получится затемнить тот же спрайт без изменения картинки текущего или добавления нового.
Да и незачем его темнить, ведь можно поменять изображение на более темное при определенном условии, и наоборот.
Почему анимацию? Именно потому, что, как ты говоришь, кадров у спрайта много. А тогда для каждого его отдельного состояния разумно создать свою "папку", чтобы эти кадры не пересекались с другими. Именно об этом говорил _ToBe_.
2) Если свойства меняются (и их муторно/невозможно менять через события вручную), то возможно придется уничтожать текущий объект и на его же месте спавнить новый (Sprite -> Spawn another object или System -> Create object).

Как я понимаю, в данном случае имеет место первый (менее проблемный) случай.

Так в чем загвоздка? В условии, при котором должен затемняться нижний?
Тут возникает еще один вопрос тогда. Всегда ли нижний спрайт - нижний, а верхний - верхний? Или любой из них можно уничтожить и оставшийся по умолчанию станет другим (порой даже одновременно и верхним и нижним)?

В любом случае, предлагаю такие решения:
1) Event:
Sprite2 -> On collision with another object -> Sprite1 at point 1 (точка должна быть выставлена на верхней границе спрайта)
Sprite1 -> Set animation -> Black
В данном случае Sprite1 и Sprite 2 - один и тот же спрайт, просто его разные копии. Просто правило будет применяться только к тем, которых коллизят сверху.

2) Если не проканает 1.
Создать для каждого спрайта чуть повыше его маленький другой спрайт, сделав его невидимым.
Дальше та же схема, но в event'e:
Sprite2 -> Is overlapping another object -> Sprite3 at point 1 (точка в пределах мини-спрайта, который служит маркером "заезда" верхнего спрайта на место над нижним)
Sprite1 -> Set animation -> Black

Надеюсь, поможет)
madsenДата: Вторник, 20 Января 2015, 23:46 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Цитата Zealot ()
Речь о том, что:
1) Если у объекта не меняются физические свойства, то достаточно изменить лишь его внешний вид событием (добавить ему новую анимацию).
Насколько мне известно, C2 не позволяет менять яркость спрайта, следовательно не получится затемнить тот же спрайт без изменения картинки текущего или добавления нового.
Да и незачем его темнить, ведь можно поменять изображение на более темное при определенном условии, и наоборот.
Почему анимацию? Именно потому, что, как ты говоришь, кадров у спрайта много. А тогда для каждого его отдельного состояния разумно создать свою "папку", чтобы эти кадры не пересекались с другими. Именно об этом говорил _ToBe_.
2) Если свойства меняются (и их муторно/невозможно менять через события вручную), то возможно придется уничтожать текущий объект и на его же месте спавнить новый (Sprite -> Spawn another object или System -> Create object).

Как я понимаю, в данном случае имеет место первый (менее проблемный) случай.

Так в чем загвоздка? В условии, при котором должен затемняться нижний?
Тут возникает еще один вопрос тогда. Всегда ли нижний спрайт - нижний, а верхний - верхний? Или любой из них можно уничтожить и оставшийся по умолчанию станет другим (порой даже одновременно и верхним и нижним)?

В любом случае, предлагаю такие решения:
1) Event:
Sprite2 -> On collision with another object -> Sprite1 at point 1 (точка должна быть выставлена на верхней границе спрайта)
Sprite1 -> Set animation -> Black
В данном случае Sprite1 и Sprite 2 - один и тот же спрайт, просто его разные копии. Просто правило будет применяться только к тем, которых коллизят сверху.

2) Если не проканает 1.
Создать для каждого спрайта чуть повыше его маленький другой спрайт, сделав его невидимым.
Дальше та же схема, но в event'e:
Sprite2 -> Is overlapping another object -> Sprite3 at point 1 (точка в пределах мини-спрайта, который служит маркером "заезда" верхнего спрайта на место над нижним)
Sprite1 -> Set animation -> Black


Что я сейчас прочитал?


ScirrA ConstrucT
-------------------------
Unity 3D
-------------------------
Crytek Engine 3
-------------------------
Unreal Development Kit
_ToBe_Дата: Среда, 21 Января 2015, 01:49 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
madsen, возможно ответ на твой вопрос biggrin
ZealotДата: Четверг, 22 Января 2015, 23:47 | Сообщение # 12
был не раз
Сейчас нет на сайте
Увы, немногие умеют толково гадать на кофейной гуще. И я не из их числа.
Поэтому чем точнее и детальнее вопрос, тем уместнее ответ)
Слишком много в мире C2 возможностей, чтобы на эфемерный вопрос ответ был однозначным.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг