hey astelix, so I am on step8 now, and Iāve been following your code, but for some reason I donāt get any object being spawned. I didnāt complete the whole tutorial code - but I think I left out the friction functions only.
Mabye somebody can point out something really obvious to me? Here is the code:
import direct.directbase.DirectStart
import random
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
from direct.interval.IntervalGlobal import *
loadPrcFileData("", """syn-video 0""")
import snipstuff
base.cam.setPos(0, -30, 10)
base.cam.lookAt((0,0,4))
base.cTrav = CollisionTraverser()
# this is what "simulates" our physics
base.enableParticles()
collisionHandler = PhysicsCollisionHandler()
collisionPlane = CollisionPlane(Plane(Vec3(0, 0, 1), Point3(0,0,0)))
plane = base.render.attachNewNode(CollisionNode('planecnode'))
plane.node().addSolid(collisionPlane)
plane.show()
# Affect everything below render by this force node
globalForcesForceNode = ForceNode('world-forces')
globalForces = base.render.attachNewNode(globalForcesForceNode)
# set linear downward on Z force
globalForcesGravity = LinearVectorForce(0, 0, -9.81)
globalForcesForceNode.addForce(globalForcesGravity)
# physics manager created when we called base.enableParticles()
base.physicsMgr.addLinearForce(globalForcesGravity)
def phyball_dispenser(modelname, scale=1.):
ball = NodePath(PandaNode('phisicsball'))
ballActor = ActorNode('ballactornode')
ballActorNP = ball.attachNewNode(ballActor)
ballModel = loader.loadModel(modelname)
ballModel.reparentTo(ballActorNP)
ballModel.setScale(scale)
ballCollider = ballActorNP.attachNewNode(CollisionNode('ballcnode'))
ballCollider.node().addSolid(CollisionSphere(0, 0, 0, 1*scale))
base.physicsMgr.attachPhysicalNode(ballActor)
collisionHandler.addCollider(ballCollider, ballActorNP)
base.cTrav.addCollider(ballCollider, collisionHandler)
ball.reparentTo(base.render)
return ball
smiley = phyball_dispenser('smiley')
def object_dispenser(num):
def create_object():
phyball = phyball_dispenser(random.choice(['frowney', 'watermelon']))
pos = (random.uniform(-1,1), random.uniform(-.5, .5), 30)
phyball.setPos(pos)
creates = []
for i in range(num):
creates.append(Func(create_object))
creates.append(Wait(.24))
Sequence(*creates)
snipstuff.DO.accept('r', object_dispenser, [30])
run()
Also, I donāt understand what the function acce() does. Especially the second line with ā-repeatā business:
def acce(k,h,p):
snipstuff.DO.accept(k,h,p)
snipstuff.DO.accept(k+'-repeat', h, p)
Thanks!