![]()
BizzaroFukuro
MWS Hardcore
![]() ![]() offline
Опыт:
2,178Активность: |
Интерактивный труп
Суть в следующем: нужно при смерти юнита создать его труп, который можно атаковать, и который не разлагается до конца игры.
Для этого я использую триг с такой функцией: Код:
Есть две проблемы: 1. Положение трупа != положению умирающего юнита (у трупа "Тип движения = Нет", физ.размер = 0). Несовпадение положения - в пределах 32 коорд.точек (если на глаз). 2. В момент показа трупа (т.е. после 1.34 секунды), если камера игрока находилась далеко, то анимация трупа будет замороженный "stand". Если камера рядом (охватывает своим полем зрения умирающего юнита), то всё в порядке. Это распространяется на каждого игрока индивидуально, т.е. кто-то видит труп по-нормальному, а кто-то видит его стоячим. Что делать? Отредактировано BizzaroFukuro, 30.06.2010 в 11:46. |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
XOR
![]() offline
Опыт:
38,284Активность: |
XiMiKs добавил: Убрать слип и не понятную глобалку. |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
BizzaroFukuro
MWS Hardcore
![]() ![]() offline
Опыт:
2,178Активность: |
Цитата:
Цитата:
Цитата:
Цитата:
Отредактировано BizzaroFukuro, 27.02.2010 в 14:10. |
||||
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
exAres
I love magic :)
![]() ![]() offline
Опыт:
7,788Активность: |
BizzaroFukuro, насчет первого: ты сначала удали старого юнита а потом создавай труп. |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
XOR
![]() offline
Опыт:
38,284Активность: |
Зачем глобалку в локалку? да и в принципе функцию можно запускать через TriggerAddAction. Слип менять на таймер.
XiMiKs добавил: И ты при SetUnitPathing false ставил? Труп 1 кстати не удаляешь. 2 |
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FellGuard
Losyash
![]() ![]() offline
Опыт:
39,547Активность: |
SetUnitX/Y после создания.
FellGuard добавил: Вообще, делай по событию "юнит начинает разлагаться", не надо будет так заморачиваться. |
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Mr_ILYAS
Kicked by XimikS
![]() offline
Опыт:
492Активность: |
А ты в курсе, что когда создаешь юнита в каком то месте. он всё равно создается не в точном месте где хотел?
Поэтому всё равно надо юнита передвигать после того как создал
call SetUnitX(c,GetUnitX(u))
call SetUnitY(c,GetUnitY(u)) в строке call SetUnitTimeScalePercent(c,0.) Percent можно убрать (но только в твоём случае, так как у тебя всё равно ноль стоит)
По поводу второго вопроса, попробуй: call SetUnitAnimationByIndex(какой юнит, номер анимации) (номер анимации можно принимать от 0 до 15 (больше я не видел юнита у которого больше анимаций) ) |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
BizzaroFukuro
MWS Hardcore
![]() ![]() offline
Опыт:
2,178Активность: |
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FellGuard
Losyash
![]() ![]() offline
Опыт:
39,547Активность: |
BizzaroFukuro, криво ты пробовал. SetUnitX/Y поместит юнита куда надо даже если указанные координаты находятся за пределами карты. Смена события, во-первых, избавит тебя от беготни с TriggerSleepAction(), во-вторых не надо будет создавать лишнюю локалку. |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
BizzaroFukuro
MWS Hardcore
![]() ![]() offline
Опыт:
2,178Активность: |
Цитата:
Это я знаю, поэтому буду пробовать ещё. Но вообще основная проблема - вторая. Ради одной первой проблемы я бы не стал мутить тему (просто спросил до кучи). |
|
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FellGuard
Losyash
![]() ![]() offline
Опыт:
39,547Активность: |
короче так) Дело было в скорости смешения анимаций.
|
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
никогда не вызывайте remove unit если он не мёртв |
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
FellGuard
Losyash
![]() ![]() offline
Опыт:
39,547Активность: |
ScorpioT1001, а он мёртв) Т.е. ф-ия срабатывает на событие UNIT_DECAY
FellGuard добавил: Вообще да, забыл сказать, ещё Тс рекомендовал не использовать РемувЮнит вообще. Вполне достаточно опрозрачнить, игра доделает остальное. |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
BizzaroFukuro
MWS Hardcore
![]() ![]() offline
Опыт:
2,178Активность: |
Цитата:
Что по поводу первой проблемы - я делал также, как в твоём примере. Как ни странно, это всё равно не помогло, до тех пор пока я не поставил у трупа физ.размер 16 вместо нуля. Цитата:
|
||
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Doc
![]() offline
Опыт:
62,263Активность: |
FellGuard, лично я убираю юнита так:
Отредактировано DoctorGester, 28.02.2010 в 17:58. |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
XOR
![]() offline
Опыт:
38,284Активность: |
|
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Doc
![]() offline
Опыт:
62,263Активность: |
XiMiKs, чем плохо то? у меня при убийстве юнита еще тексттаги над головой появляются, так что мне нужно его из поля зрения убирать |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
BizzaroFukuro
MWS Hardcore
![]() ![]() offline
Опыт:
2,178Активность: |
Всем спасибо, можно закрывать. |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|