예제 #1
0
def SUB_CalcMove(tdest, tspeed, func, *qwp_extra):
    vdestdelta = Vector(0, 0, 0)
    len = 0
    traveltime = 0
    if not tspeed:
        qc.objerror('No speed is defined!')
    qc.self.think1 = func
    qc.self.finaldest = tdest
    qc.self.think = SUB_CalcMoveDone
    if tdest == qc.self.origin:
        qc.self.velocity = Vector(0, 0, 0)
        qc.self.nextthink = qc.self.ltime + 0.1
        return 
        
    #  set destdelta to the vector needed to move
    vdestdelta = tdest - qc.self.origin
    #  calculate length of vector
    len = vdestdelta.length()
    #  divide by speed to get time to reach dest
    traveltime = len / tspeed
    if traveltime < 0.03:
        traveltime = 0.03
    #  set nextthink to trigger a think when dest is reached
    qc.self.nextthink = qc.self.ltime + traveltime
    #  scale the destdelta vector by the time spent traveling to get velocity
    qc.self.velocity = vdestdelta * (1 / traveltime) #  qcc won't take vec/float	
예제 #2
0
def SUB_CalcAngleMove(destangle, tspeed, func, *qwp_extra):
    destdelta = Vector(0, 0, 0)
    len = 0
    traveltime = 0
    if not tspeed:
        qc.objerror('No speed is defined!')
    #  set destdelta to the vector needed to move
    destdelta = destangle - qc.self.angles
    #  calculate length of vector
    len = destdelta.length()
    #  divide by speed to get time to reach dest
    traveltime = len / tspeed
    #  set nextthink to trigger a think when dest is reached
    qc.self.nextthink = qc.self.ltime + traveltime
    #  scale the destdelta vector by the time spent traveling to get velocity
    qc.self.avelocity = destdelta * (1 / traveltime)
    qc.self.think1 = func
    qc.self.finalangle = destangle
    qc.self.think = SUB_CalcAngleMoveDone