zoukankan      html  css  js  c++  java
  • TGE学习笔记07 脚本控制动画

    设想这样一个场景,开车飞驰在公路上,突然发现前方有一个木箱,这时避让已经来不及,只见汽车撞上木箱,木箱被撞碎飞出。
    我们要做这样的场景,至少有两个工作要做,
    1.汽车撞上木箱时,需要播放木箱撞碎的动画;
    2.动画播放结束后,需要删除。
    以下是非常简单的脚本:
     1datablock StaticShapeData(Box01)
     2{
     3    category = "Box";
     4    shapeFile = "~/data/Box/Box01.dts";
     5}
    ;
     6
     7function Box01::onCollision(%this%obj, %col)
     8{
     9    echo( "Box01::onCollision" );
    10    %obj.playThread(0"bomb");
    11}

    12
    13function Box01::onEndSequence(%this,%obj,%slot)
    14{
    15   echo("Sequence Done!");
    16   %obj.stopThread(%slot);
    17   %obj.delete();
    18}

    加上以上代码,测试一下,木箱被撞碎飞出,任务完成。

    等等,。。。,发现新的问题,木箱确实飞出,但是汽车停下来了。
    原来,当汽车碰上木箱后,因为碰撞而减速了,
    这与常识有点差别,应该木箱撞飞,而汽车因为质量较大继续前进。
    这时我们是多么想念物理引擎啊,对于没有物理引擎的小型游戏,我们只好用笨办法了。
    万能的Trigger要登场了。
    我们将木箱模型的碰撞体去掉,取而代之的是放上一个Trigger,
    当汽车进入Trigger时,我们播放动画,动画播放结束被删除。
    同时,对汽车的速度做一个衰减,比如扣除10%,这个值就随你来定了。
  • 相关阅读:
    hdu 5723 Abandoned country 最小生成树 期望
    OpenJ_POJ C16G Challenge Your Template 迪杰斯特拉
    OpenJ_POJ C16D Extracurricular Sports 打表找规律
    OpenJ_POJ C16B Robot Game 打表找规律
    CCCC 成都信息工程大学游记
    UVALive 6893 The Big Painting hash
    UVALive 6889 City Park 并查集
    UVALive 6888 Ricochet Robots bfs
    UVALive 6886 Golf Bot FFT
    UVALive 6885 Flowery Trails 最短路
  • 原文地址:https://www.cnblogs.com/gamesacer/p/1124715.html
Copyright © 2011-2022 走看看