YesNoOk
avatar

reversed angle homing projectile (Read 1294 times)

Started by Malisoulxd, November 16, 2018, 04:49:21 pm
Share this topic:
reversed angle homing projectile
#1  November 16, 2018, 04:49:21 pm
  • avatar
    • USA
trying to make a PK starstorm that homes in on the enemy but some of the meteor sprites either spaz out and reversed from the direction its going then fixes itself after a second after it enters the screen.  some of them do just fine but others are buggy despite using the  directional angle code

tracking code i used

Code:
[State 2010, Angle]
type = AngleSet
trigger1 = 1
value = ((atan((-1*Vel Y)/Vel X))*(360/(2*pi))) + 90

[State 2010, Draw]
type = AngleDraw
trigger1 = 1

[State 2010: Turn]
type = Turn
trigger1 = (P2Dist X < 10)

[State 2010: VelSet]
type = VelSet
trigger1 = (!Time)
x = 3

[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X < 0) && (Vel X > -6)
x = -0.1

[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X > 0) && (Vel X < 6)
x = 0.1

[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y > Pos Y) && (Vel Y < 6)
y = 0.1

[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y <= Pos Y) && (Vel Y > -6)
y = -0.1

the whole attack

Code:
[Statedef 2000]
type    = U
movetype= I
physics = N
velset = 0,0
ctrl = 0
anim = 2000

[State 2000, 0]
type = SuperPause
trigger1 = time = 0
time = 60
anim = 102
sound = 20,0
pos = 5*const(size.xscale),-50*const(size.yscale)
movetime = 60
darken = 1
p2defmul = 1
poweradd = -3000
unhittable = 0

[State 400, 0]
type = PosAdd
trigger1 = time > 15
trigger1 = time%4 = 0
y = const(size.yscale)

[State 400, 0]
type = PosAdd
trigger1 = time > 18
trigger1 = time%4 = 2
y = -const(size.yscale)

[State 1000, 0]
type = BGPalFX
trigger1 = 1
time = 1
mul = 100,100,100

[State 2000, 0]
type = Offset
trigger1 = AnimElem = 4,>=0
trigger1 = AnimElem = 4,< 180
y = -2*const(size.yscale)

[State 2000]
type = VelSet
trigger1 = Pos Y >= 0
x = 0
y = 0

[State 2000]
type = PosSet
trigger1 = Pos Y > 0
y = 0

[State 2000]
type = PlaySnd
trigger1 = AnimElem = 1
value = s12, 0

[State 2000]
type = Helper
trigger1 = Anim = 2000
trigger1 = AnimElem = 4
helpertype = normal
name = "FinalSmashHelper1"
ID = 2001
stateno = 2001
pos = 0,0
postype = p1
facing = 1
ownpal = 1

[State 2000]
type = Helper
trigger1 = Anim = 2000
trigger1 = AnimElem = 4
helpertype = normal
name = "FinalSmashHelper2"
ID = 2002
stateno = 2002
pos = 0,0
postype = p1
facing = 1
ownpal = 1

[State 2000]
type = ChangeAnim
trigger1 = Anim = 2000
trigger1 = Time = 340
value = 2005

[State 2000]
type = ChangeState
trigger1 = Anim = 2005
trigger1 = AnimTime = 0
value = 50
ctrl = 1

[State 2000]
type = Changestate
trigger1 = Anim = 2005
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;---------------------------------------------------------------------------
[Statedef 2001]
type    = A
movetype= I
physics = N
anim = 2001

[State 2001]
type = Turn
trigger1 = Facing = -1

[State 2001]
type = PosSet
trigger1 = 1
x = 0
y = -480

[State 2001]
type = VarRandom
trigger1 = time%60= 0
v = 20
range = -10,-2

[State 2001]
type = VarRandom
trigger1 = time = 235
v = 20
range = -10,-7

[State 2001]
type = Helper
trigger1 = time%60= 0
trigger2 = time = 235
helpertype = normal
name = "PKStarStorm"
ID = 2010
stateno = 2010
pos = Var(20)*30,0
postype = p1
facing = 1
ownpal = 1
size.xscale = 1.15*const(size.yscale)
size.yscale = 1.15*const(size.yscale)

[State 0, Explod]
type = Explod
trigger1 = Time % 5 = 0
anim = 30000
sprPriority = 5
posType = P1
random = 350,200
pos = 0,100
vel = 0 -(Random / 2000.0), 5 - (Random / 2000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = 1.5,1.5
ownpal = 1


[State 2001]
type = DestroySelf
trigger1 = Time = 235

[Statedef 2002]
type    = A
movetype= I
physics = N
anim = 2001

[State 2002]
type = Turn
trigger1 = Facing = -1

[State 2002]
type = PosSet
trigger1 = 1
x = 0
y = -480

[State 2002]
type = VarRandom
trigger1 = time%60= 30
v = 20
range = 2,10

[State 2002]
type = VarRandom
trigger1 = time = 220
v = 20
range = -3,3

[State 2002]
type = VarRandom
trigger1 = time = 230
v = 20
range = 7,10

[State 2002]
type = Helper
trigger1 = time%60= 30
trigger2 = time = 220
trigger3 = time = 230
helpertype = normal
name = "PKStarStorm"
ID = 2010
stateno = 2010
pos = Var(20)*30,0
postype = p1
facing = 1
ownpal = 1
size.xscale = 1.15*const(size.yscale)
size.yscale = 1.15*const(size.yscale)

[State 2002]
type = DestroySelf
trigger1 = Time = 235


[Statedef 2010]
type = A
movetype= A
physics = N
ctrl = 0
anim = 2010

[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X <= -45
x = -7*const(size.xscale)*sin(Pi*17/9)
y = 7*const(size.yscale)*cos(Pi*17/9)

[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X = [-45,-20]
x = -7*const(size.xscale)*sin(Pi*35/18)
y = 7*const(size.yscale)*cos(Pi*35/18)

[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X = [-20,20]
x = 0
y = 7*const(size.yscale)

[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X = [20,45]
x = -7*const(size.xscale)*sin(Pi/18)
y = 7*const(size.yscale)*cos(Pi/18)

[State 2010]
type = VelSet
trigger1 = Time = 0
trigger1 = Pos X > 45
x = -7*const(size.xscale)*sin(Pi/9)
y = 7*const(size.yscale)*cos(Pi/9)

[State 2010, Angle]
type = AngleSet
trigger1 = 1
value = ((atan((-1*Vel Y)/Vel X))*(360/(2*pi))) + 90

[State 2010, Draw]
type = AngleDraw
trigger1 = 1

[State 2010: Turn]
type = Turn
trigger1 = (P2Dist X < 10)

[State 2010: VelSet]
type = VelSet
trigger1 = (!Time)
x = 3

[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X < 0) && (Vel X > -6)
x = -0.1

[State 2010: VelAdd]
type = VelAdd
trigger1 = (P2Dist X > 0) && (Vel X < 6)
x = 0.1

[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y > Pos Y) && (Vel Y < 6)
y = 0.1

[State 2010: VelAdd]
type = VelAdd
trigger1 = (EnemyNear, Pos Y <= Pos Y) && (Vel Y > -6)
y = -0.1

[State 2010]
type = HitDef
trigger1 = time = 0
attr = A, HA
damage = 150,150
animtype = heavy
hitflag = MAFD
getpower = 0
givepower = 200
priority = 0, Hit
sparkno = s10002
pausetime = 0,12
sparkxy = -10, 30
hitsound = S12,2
guardsound = 6,0
ground.type = High
ground.slidetime = 30
ground.hittime = 30
ground.velocity = ifelse(Vel X >=0,1,-1),-8
air.velocity = ifelse(Vel X >=0,1,-1),-8
fall = 1
envshake.time = 15
envshake.freq = 60
envshake.ampl = -4
envshake.phase = 90
PalFX.time = 40
PalFX.add = -104,-14,70
PalFX.mul = 256,256,256
PalFX.sinadd = 56,56,0,10
PalFX.invertall = 0
PalFX.color = 0

[State 0, Explod]
type = Explod
trigger1 = Time % 3 = 0
anim = 2011
sprPriority = 5
posType = P1
random = 80,80
pos = 0,0
vel = 0 -(Random / 4000.0), 0 - (Random / 4000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = .5,.5
ownpal = 1

[State 0, Explod]
type = Explod
trigger1 = Time % 3 = 0
anim = 2012
sprPriority = 5
posType = P1
random = 80,80
pos = 0,0
vel = 0 -(Random / 4000.0), 0 - (Random / 4000.0)
facing = ifElse(Random < 500, -1, 1)
vfacing = ifElse(Random < 500, -1, 1)
scale = .5,.5
ownpal = 1

[State 2010]
type = TargetVelAdd
trigger1 = NumTarget > 0
trigger1 = Target,Alive = 1
trigger1 = Target,Pos Y < -480
trigger1 = NumHelper(2001)
y = .2
ID = -1

[State 2010]
type = AttackDist
trigger1 = 1
value = 0

[State 2010]
type = DestroySelf
trigger1 = Pos Y > 0
trigger1 = ScreenPos Y > 300
trigger2 = time > 600
trigger3 = MoveContact

just looking for a proper code for this kind of attack
Re: reversed angle homing projectile
#2  November 17, 2018, 02:15:01 am
  • ****
  • Robotics Engineer
    • USA
    • altoiddealer@gmail.com
This doesn’t seem right to me

[State 2010: Turn]
type = Turn
trigger1 = (P2Dist X < 10)

Does it seem like the issue has to do with ones that spawn closer or further from the enemy?

Re: reversed angle homing projectile
New #3  November 17, 2018, 02:31:18 am
  • avatar
    • USA
This doesn’t seem right to me

[State 2010: Turn]
type = Turn
trigger1 = (P2Dist X < 10)

Does it seem like the issue has to do with ones that spawn closer or further from the enemy?

the reverse sprites seem to spawn around the middle. still trying to figure this out

Update: i tried changing trigger1 = (P2Dist X < 10)  to trigger1 = (P2Dist X > 45) then i flipped it upside down and it was working the way i wanted it. so the problem was the turn state all along
Last Edit: November 17, 2018, 03:03:03 am by Malisoulxd