python - panda3d中如何在一段时间间隔后停止动画?

标签 python panda3d

下面的代码不符合我的预期。如果用户按“w”键,我希望它向北走。 Actor Pandas 在动画未完成时第一次表现出运动,它停止了并且不再运动。我是否错误地使用了发动机?或者我应该使用其他东西来实现我的目的吗?

from direct.showbase.ShowBase import ShowBase
from direct.actor.Actor import Actor
from panda3d.core import Point3
from direct.interval.IntervalGlobal import*
class Window(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)
    def loadModels(self):
        self.envir = loader.loadModel("models/environment")
        self.envir.reparentTo(self.render)
        self.envir.setY(1183.37)
        self.envir.setHpr(0, 8, 0)
        self.panda = Actor("models/panda-model", {"idle": "models/panda-model", "walk": "models/panda-walk4"})
        self.pandaPosY = 502
        self.pandaPosX = 0
        self.pandaPosZ = -102.66
        self.panda.setScale(0.05, 0.05, 0.05)
        self.panda.setY(502)
        self.panda.setZ(-102.66)
        self.panda.setHpr(180, 0, 0)
        self.accept("w", self.MoveForward)
        self.panda.reparentTo(self.render)
    def MoveForward(self):
        pandaForwardWalk = self.panda.posInterval(2, Point3(self.pandaPosX, self.pandaPosY + 50, self.pandaPosZ), startPos = Point3(self.pandaPosX, self.pandaPosY, self.pandaPosZ))
        self.panda.play("walk")
        self.pandaForwardWalk = Sequence(pandaForwardWalk, name="pandaForwardWalk")
game = Window()
game.loadModels()
game.run()

最佳答案

要连续循环动画,请使用 .loop() 而不是 .play()。要实际移动模型,请使用 .set_pos(),或查找 LerpIntervals:https://www.panda3d.org/manual/index.php/Lerp_Intervals

关于python - panda3d中如何在一段时间间隔后停止动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134672/

相关文章:

python - 使用 crontab 在 prawcore 上导入错误

python - 此 Python 斐波那契数函数对于任何输入都会生成 0.0。我究竟做错了什么?

python - 读取一行或 idk 时的 EOF

python - 集成 Rails 和 Python

python - 在 2.7.3 OSX Lion 中使用 panda3D

python - 在 enthought canopy 中突破 python shell 提示 "...:"

python - 自定义按升序对数字列表进行排序

python - panda3d python 中的立方体贴图渲染

python - panda3d python 导入错误

python - 安装 Panda3d 以使用 python 运行