r/wiremod•
Tyler13700

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
Loading comments…