• 一个简单的游戏开发框架(六.行为Action)


    Action是cocos2d-x中比较重要的概念,有一个庞大的类族。参见老G写的cocos2d-x学习笔记09:动作2:持续动作

    除了各种包装器,剩下的主要是一些持续动作:

    CCMoveTo:移动到、CCMoveBy:按……移动
    CCJumpTo:跳跃到、CCJumpBy:按……跳跃
    CCBezierTo:贝兹移动到、CCBezierBy:按……贝兹移动
    CCRotateTo:旋转到、CCRotateBy:按……旋转
    CCScaleTo:缩放到、CCScaleBy:按……缩放
    CCSkewTo:切变到、
    CCSkewBy:按……切变
    CCTintTo:颜色渐变到、CCTintBy:按……颜色渐变
    CCFadeIn:从无到有,也叫淡入、CCFadeOut:从有到无,也叫淡出、CCFadeTo:改变不透明度到某个值
    CCBlink:闪耀
    CCDelayTime:延时

    可以看出cocos2d中的Action在概念上,主要还是面对图形,动画的操作。我希望Action有更高层级的抽象,不是面向图形,而是面向游戏里的逻辑对象比如角色,怪物,地表物品等。而且不仅仅用于客户端,也能用于服务器。cocos2d里的各种包装器概念在新的框架里依然有用。除此之外就是依项目需求,游戏里各种对象所需要的行为,典型的比如移动,攻击。Action的主要功能,就是改变对象属性。Action和ActionManager,Object之间的关系,与cocos2d-x中CCAction和CCActionManager,CCNode之间的关系一样,接口也非常近似。
    class ActionMgr
    {
    public:
        void ActionTick();
        void AddAction(Action* pAction);
        void StopAction(Action* pAction);
    };
    class Action
    {
    public:
        virtual void RunWithTarget(Object* pTarget) = 0;
        virtual void StepAction(double dt) = 0;
        virtual bool IsDone() = 0;
    };

    下面是一个移动Action的例子,可以看到行为怎样和对象属性发生作用。Action应该设计得尽量小,依赖的属性尽量少,每个Action只影响一个或一组属性为好。

    void ActionMoveTo::StepAction(double dt)
    {
        if (!_bRunning)
            return;
    
        // 取当前位置
        Point3F pos;
        pos.x = _pTarget->GetProperty(Properties::POSX);
        pos.y = _pTarget->GetProperty(Properties::POSY);
        pos.z = _pTarget->GetProperty(Properties::POSZ);
    
        // 计算下一时刻位置
        pos.x += (float)(_ds.x * dt);
        pos.y += (float)(_ds.y * dt);
        pos.z += (float)(_ds.z * dt);
    
        // 判断是否到达目的地
      ……

    // 修改位置属性 auto xyz = std::make_tuple(pos.x, pos.y, pos.z); _pTarget->SetPropertyGroup<Properties::POSX>(xyz); }
     
  • 相关阅读:
    DB2数据库基础
    mysqldump 备份数据库脚本
    Windows Server 2012 R2 卸载IE浏览器
    mysqlpump 和 mysql_config_editor测试
    Linux 修改时区
    PowerShe 消息提示框测试
    Python使用libsvm的“ImportError: No module named svmutil”问题
    常见的机器学习&数据挖掘知识点
    [猜你喜欢]冠军“yes,boy!”分享,含竞赛源代
    用户人品预测大赛获奖团队分享
  • 原文地址:https://www.cnblogs.com/bnudc/p/3446322.html
Copyright © 2020-2023  润新知