Inscrit le: 21 Aoû 2007 Messages: 915 Sujets: 47 Spécialité en worldedit: Faire des maps avec 500 déclos en GUI alors que 2 en JASS suffisent Médailles: 1 (En savoir plus...)
Posté le: 04/04/08 20:38 Sujet du message:
Tu peux mettre
"Le saut sois-disant parfait" ou
"Le saut que je trouve parfait" ou
"Le saut presque parfait" ou
"Le saut parfait (ou presque)" ou
"Le super saut !" ou
"Le saut ultime" ou
"L'unique saut de la mort !" ou
"Tu est saucé par ce saut !" _________________
Juste pour remercie Rommstein. Ce tutorial est quand même génial. Bon j'ai passé deux heures à essayer de modifier le saut avant d'y arriver, mais merci!
(Maintenant j'ai un druide qui peut sauter en arrière tout en balancer des ours dans la tronche des ennemis situés sur le point de départ Et en Gui. ) _________________
Inscrit le: 06 Nov 2007 Messages: 1617 Sujets: 62 Spécialité en worldedit: Pourquoi pas ? Médailles: 1 (En savoir plus...)
Posté le: 29/12/08 12:51 Sujet du message:
Une petite question, comment faire pour que l'unité ne monte pas sur les falaises et ne passe pas à travers les arbres ? (Je sais que tu as fais le système sur AL mais il est pas dans ton tuto) _________________
Ah oui ca c'est une bonne question, j'ai eu le même problème, et je vais en avoir besoin aussi. Surtout quand on se sert des hauteurs comme de "murs" _________________
Inscrit le: 31 Aoû 2007 Messages: 606 Sujets: 12 Spécialité en worldedit: Enchanteur des enchantements.
Posté le: 29/12/08 14:58 Sujet du message:
J'imagine que le problème vient du fait que l'unité devient volante donc elle peut franchir n'importe quoi. P'tet en supprimant juste sa collision sans lui ajouter Forme de corbeau ça passera =/ _________________
C'est parce que dans les options de ton sort de saut (normalement fondé sur canaliser), tu as dû mettre "targeting image" pour un sort qui n'a pas d'effet de zone (stats- area effect = 0). _________________
@Rom' : très longtemps après, voilà une version de saut ressemblant au tiens, qui n'est autre qu'une version modifié de la fonction de recul de Rhadamante. Je profite d'un lifting de ma carte RC601 en vjass (ca fait 6 heures que j'améliore/débuggue etc...).
La seule distinction avec ton sort, c'est que tu peux personnaliser la hauteur du saut ainsi que sa vitesse.
Sinon c'est globalement le même principe. J'ai fait le test avec un sort sans cible et un sort avec cible.
private function Action takes nothing returns nothing
local timer t = GetExpiredTimer()
local jumps js = GetTimerData(t)
local real newX = GetUnitX(js.target) + js.vit*Cos(js.angle)
local real newY = GetUnitY(js.target) + js.vit*Sin(js.angle)
local real z = GetUnitFlyHeight(js.target)
local real newz = 0.00
if (js.i < js.distance) and IsPointPathableForUnit(newX, newY, js.target) then
set js.i = js.i + 1
call SetUnitPosition(js.target, newX, newY)
if (js.i < (js.distance * 0.5)) then
set newz = z + (js.distance * js.imp)
else
set newz = z - (js.distance * js.imp)
endif
call SetUnitFlyHeight(js.target, newz, 0.00)
function jump takes unit u, integer speed, real x1, real y1, real x2, real y2, real imp returns nothing
local timer t = NewTimer()
local jumps js = jumps.create()
call SetUnitAnimation(u, "Stand Defend")
call SetUnitPathing( u, false)
set js.target = u
set js.angle = Atan2((y2 -y1), (x2 - x1))
set js.distance = R2I(DistanceBetweenPoints(Location(x1,y1),Location(x2,y2)))/speed
set js.vit = speed
set js.i = 0
set js.imp = imp
call SetTimerData(t, js)
call TimerStart (t, TIMEOUT, true, function Action )
call UnitAddAbility(js.target, RAVEN)
private function Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local location p1 = GetUnitLoc(u)
local real x1 = GetUnitX(u)
local real y1 = GetUnitY(u)
local real a = GetUnitFacing(u)
local location p = PolarProjectionBJ(Location(x1, y1), -400.00, a)
local real x2 = GetLocationX(p)
local real y2 = GetLocationY(p)
call jump(u, 20,x1,y1,x2,y2, 1.00)
set u = null
call RemoveLocation(p)
set p = null
endfunction
//=================================================
public function init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition(t, Condition(function Conditions))
call TriggerAddAction(t, function Actions)
endfunction
private function Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local location p1 = GetUnitLoc(u)
local real x1 = GetUnitX(u)
local real y1 = GetUnitY(u)
local real a = GetUnitFacing(u)
local location p = PolarProjectionBJ(Location(x1, y1), -400.00, a)
local real x2 = GetLocationX(p)
local real y2 = GetLocationY(p)
// etc.
Tu as 2 coordonnées, une distance, un angle, pourquoi utiliser 2 points ? Les points c'est le mal, ne t'en sert que pour GetSpellTargetLoc().
En plus PolarProjectionBJ aurait du te mettre sur la voie :
Jass:
function PolarProjectionBJ takes location source, real dist, real angle returns location
local real x = GetLocationX(source) + dist * Cos(angle * bj_DEGTORAD)
local real y = GetLocationY(source) + dist * Sin(angle * bj_DEGTORAD)
return Location(x, y)
endfunction
Remplace par :
Jass:
private function Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local real x1 = GetUnitX(u)
local real y1 = GetUnitY(u)
local real a = GetUnitFacing(u)
local real x2 = x1 - 400.0*Cos(a* bj_DEGTORAD)
local real y2 = y1 - 400.0*Sin(a* bj_DEGTORAD)
// etc.
Toutes les heures sont au format GMT + 1 Heure Aller à la page Précédente1, 2, 3, 4, 5Suivante
Page 3 sur 5
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum