Applyforce equation will randomly go from 10-100k force to 1 billion+ force??
I have an applyforce that works sort of like a VTOL, but randomly (especially when pressing S ive noticed) it returns over a billion for the end result for the up direction. I need help finding out what's causing this and how to fix it.
@name Helicopter
@inputs Base:entity Chair:entity CamAng:angle
@outputs CamPos:vector Dist
@persist Elevation Lock Active W A S D Space Shift Angle:angle Clearance:ranger
@trigger
if (first()|dupefinished()|changed(Active)) {
Elevation = Base:pos():z()
}
interval(100)
Active = Chair:driver():isValid()
W = Chair:driver():keyPressed("W")
A = Chair:driver():keyPressed("A")
S = Chair:driver():keyPressed("S")
D = Chair:driver():keyPressed("D")
Space = Chair:driver():keyPressed("SPACE")
Shift = Chair:driver():keyPressed("LSHIFT")
Angle = ang((W-S)*15,CamAng:yaw(),(D-A)*15)
if (Active) {
Lock = 30
}else{
Lock = 0
}
if (Active) {
Dist = 200
CamPos = Base:pos()+vec(0,0,50)+Base:forward()*50
Base:applyForce(Base:forward()*(W-S)*150*Base:mass()+(Base:right()*(D-A)*100*Base:mass())+(vec(0,0,1)*(Elevation-Base:pos():z())*Base:inertia():z()/5*((Elevation-Base:pos())/50)))
Base:applyAngForce((Base:toLocal(Angle)*ang(20,Lock,20) - Base:angVel()*20)*shiftL(ang(Base:inertia())))
Base:applyForce(-Base:vel()*1000)
}
rangerFilter(Base:getConstraints())
rangerFilter(Base)
Clearance = rangerOffset(50,Base:pos(),vec(0,0,-1))
if (Space) {
Elevation = Elevation + 15
}elseif(Shift & !Clearance:hit()) {
Elevation = Elevation - 15
}
Also, every variable is persisted/on an input/output.
Posted Jul 5, 2017, 12:05 AM UTC
16