- Panda3d 1.7 Game Developer's Cookbook
- Christoph Lang
- 361字
- 2021-04-09 21:21:47
Making animations fit to intervals
Intervals are a very powerful feature of Panda3D, which you can see in the recipe Controlling actions using intervals. In this recipe you will go one step beyond and see how to efficiently control animations when used in conjunction with intervals.
Getting ready
If you haven't already, please read how to use intervals in Controlling actions using intervals and follow the steps of that recipe.
How to do it...
This recipe consists of the following tasks:
- Open
Application.py
. - Delete the line
self.panda.loop("walk")
. - Find the following part of the code:
self.pandaWalk = Sequence(self.walkIval1, self.turnIval1, self.colorIval, self.walkIval2, self.turnIval2, self.colorIval) self.pandaWalk.loop()
- Replace it with the following code:
self.pandaAnim = ActorInterval(self.panda, "walk", loop = 1, duration = 5) self.pandaMove = Sequence(self.walkIval1, self.turnIval1, self.colorIval, self.walkIval2, self.turnIval2, self.colorIval) self.pandaWalk = Parallel(self.pandaAnim, self.pandaMove) self.pandaWalk.loop()
How it works...
The panda is moving just like before, but now an ActorInterval
we create in the highlighted line of the code controls animation playback. We set the animation to loop and to play over the duration of five seconds. Finally, the animation-controlling ActorInterval
and the Sequence
of transformations are made part of a Parallel
that plays the two intervals at the same time.
There's more...
The actor interval constructor can take a range of optional parameters besides loop
and duration
that were already presented in the sample code. Let's take a look at what else you can do with ActorInterval
:
Instead of duration
, you can use startTime
and endTime
to define more precisely when to start and stop playing the animation.
The playrate
parameter lets you set the animation playback speed. Also note that if playrate
is a negative value, the animation is played backwards.
You can specify a sub range of the animation to be played by setting startFrame
and endFrame
. Also, if you want to loop an animation range, set constrainedLoop
to one instead of loop
.
In the following line of code, all these options have been applied to our sample code to loop the first second of the walk animation at a very low rate:
self.pandaAnim = ActorInterval(self.panda, "walk", startTime = 0, endTime = 1, playrate = 0.1, constrainedLoop = 1, duration = 5)
- 軟件定義數據中心:技術與實踐
- JasperReports for Java Developers
- 3ds Max/VRay室內設計材質、燈光與建模速查超級手冊
- 中文版SolidWorks 2015技術大全
- 鍵盤錄入技術(第2版)
- 24小時全速學會Photoshop 2021
- 中文版Photoshop CS6平面設計從新手到高手(超值版)
- Photoshop CC從入門到精通(全彩超值版)
- 中文版Photoshop CS6全能一本通·全彩版
- Adobe創意大學Photoshop產品專家認證標準教材(CS6修訂版)
- 零基礎攝影后期修圖 Photoshop照片處理輕松入門
- 構筑敏捷的開發團隊:微軟Visual Studio 2010實戰兵法
- Maya Paint Effect 特效應用手冊
- 老郵差 Photoshop數碼照片處理技法 圖層篇(修訂版)
- Magento 1.4 Development Cookbook