panda3d demo

panda3d demo,加入了键盘控制

from math import pi, sin, cos

from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import Sequence
from panda3d.core import Point3


class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

        # Disable the camera trackball controls.
        self.accept('w', self.spam_w)
        self.accept('s', self.spam_s)
        self.accept('a', self.spam_a)
        self.accept('d', self.spam_d)
        self.disableMouse()

        # Load the environment model.
        self.scene = self.loader.loadModel("models/environment")
        # Reparent the model to render.
        self.scene.reparentTo(self.render)
        # Apply scale and position transforms on the model.
        self.scene.setScale(0.25, 0.25, 0.25)
        self.scene.setPos(-8, 42, 0)

        # Add the spinCameraTask procedure to the task manager.
        self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")


        self.pandaActor = Actor("models/panda-model",
                                {"walk": "models/panda-walk4"})
        self.pandaActor.setScale(0.005, 0.005, 0.005)
        self.pandaActor.reparentTo(self.render)

        self.pandaActor1 = Actor("models/panda-model",
                                {"walk": "models/panda-walk4"})
        self.pandaActor1.setScale(0.005, 0.005, 0.005)
        self.pandaActor1.reparentTo(self.render)
        self.pandaActor.loop("walk")
        
    def spam_a(self):
        pos = self.pandaActor.getPos()
        x = pos[0]-1
        y = pos[1]
        z = pos[2]
        self.pandaActor.setPos(x,y,z);
    def spam_d(self):
        pos = self.pandaActor.getPos()
        x = pos[0]+1
        y = pos[1]
        z = pos[2]
        self.pandaActor.setPos(x,y,z)
    def spam_w(self):
        pos = self.pandaActor.getPos()
        x = pos[0]
        y = pos[1]-1
        z = pos[2]
        self.pandaActor.setPos(x,y,z)
    def spam_s(self):
        pos = self.pandaActor.getPos()
        x = pos[0]
        y = pos[1]+1
        z = pos[2]
        self.pandaActor.setPos(x,y,z)
        
    # Define a procedure to move the camera.
    def spinCameraTask(self, task):
        angleDegrees = task.time * 6.0
        angleRadians = angleDegrees * (pi / 180.0)
        self.camera.setPos(20 * sin(angleRadians), -20 * cos(angleRadians), 3)
        self.camera.setHpr(angleDegrees, 0, 0)
        return Task.cont


app = MyApp()
app.run()

猜你喜欢

转载自blog.csdn.net/nineship/article/details/106861128
今日推荐