tgoop.com/nuclearband/540
Create:
Last Update:
Last Update:
[2/2]
Но можно полностью отделить вьюху от логики - сделать так, чтобы скилл применялся мгновенно, но результатом своего применения выдавал набор анимаций. К примеру для
"Hit+Shot" результатом применения было бы
Add("Hit+Shot")
.Effect(new DamageEffect(3), EffectOn.Init)
.Effect(new Projectile("Shot"), EffectOn.Init)
.Effect(new DamageEffect(3), EffectOn.ProjectileLanded);
var animationSteps = Execute("Hit+Shot", target, source);
/*animationStepa: {
new ApplyDamage(3, target),
new ShowDamage(3, target),
new ShootProjectile("Shot", target, source),
new WaitForSeconds(1f),
new ApplyDamage(3, target),
new ShowDamage(3, target)
}*/
Это был простой случай применения скилла. А теперь представим, что на нашей цели висит щит, отражающий атаки. Тогда результатом должно быть что-то вроде такого:
/*animationSteps: {
new ShowShield(target),
new ShootProjectile("Shot", target, source),
new WaitForSeconds(0.2f),
new ApplyDamage(3, source),
new ShowDamage(3, source),
new WaitForSeconds(0.8f),
new ShowShield(target),
new WaitForSeconds(0.2f),
new ApplyDamage(3, source),
new ShowDamage(3, source),
}*/
Вычислять это кажется уже не таким простым - получается, логика должна знать о скорости полёта всех прожектайлов и расстоянии. Но есть определённый плюс - допустим перед применением скилла мы хотим показывать "предварительный урон", который нанесёт скилл. В этом случае это не сложно, а для случая, когда скилл вычисляется в рантайме с применением реальных прожектайлов - это может быть затруднительно...
Вообщем я для простоты пока что запилил через асинки без рецептов ModiBuff (но с его контроллерами) - и сосредоточился на других вещах. Но меня не покидает ощущение, что я упускаю какое-то простое и элегантное решение...
#devlog
BY NuclearBand
Share with your friend now:
tgoop.com/nuclearband/540