Cocos Creator 基于时序设计的跑酷游戏方案

  • 业务需求:2.5D效果,三列式经典跑酷游戏,有金币/障碍物,角色可跳跃,跃起时不触发金币/障碍物,固定时长流程,结束计分
  • 限制:纯2D素材,纯2D实现

项目需求限制导致很难使用物理碰撞系统/距离检测机制的传统方式解决问题,但三列式设计给了一些可趁之机,正所谓

“游戏的艺术就在于视觉欺骗”

 

简单示意图如上图。

可以发现,如果我们关注单个物品的生命周期,其从出现-->与玩家产生交互-->出画面,每段的时间都是固定的

即可以抽象为 第0秒实例化 -->第x秒开始进入与角色交互状态-->第x+a秒退出与角色交互状态-->第x+a+b秒销毁的模式

也就是说物品的逻辑层和视觉层是可以做到完全分离的

我们只需在角色的update周期中读取当前列是否有正在生效的物体和跳跃状态就可以实现逻辑层需求了

而视图层则直接将2d素材从上到下从小到大进行缓动,即可伪造出2.5d效果

方案确定,开码

首先简单做一个角色状态机

export interface ICharaState {
    SM: CharacterSM;
    charaSpine: sp.Skeleton;
    clipName: string;
    stateIn: Function;
    stateOut: Function;
    canGoTo: string[];
    lockTime: number;
}

interface定义,包括状态机实例引用,状态动画,动画片段名,入/出状态回调,可切换至的state列表,状态锁定时间

export class RunningState implements ICharaState {
    charaSpine: sp.Skeleton;
    clipName: string;
    SM: CharacterSM;
    constructor(sm: CharacterSM, charaSpine: sp.Skeleton, clipName: string) {
        this.SM = sm;
        this.charaSpine = charaSpine;
        this.clipName = clipName;
    }
    canGoTo: string[] = ['strafingLeft', 'strafingRight', 'pausing', 'jumping', 'failed'];
    stateIn = () => {
        this.SM.unscheduleAllCallbacks();
        this.SM.lockState(this.lockTime);
        this.charaSpine.addAnimation(0, this.clipName, true);
    };
    stateOut = () => {
        this.charaSpine.clearTracks();
    };
    lockTime = 0;
}

export class JumpingState implements ICharaState {
    charaSpine: sp.Skeleton;
    clipName: string;
    SM: CharacterSM;
    constructor(sm: CharacterSM, charaSpine: sp.Skeleton, clipName: string) {
        this.SM = sm;
        this.charaSpine = charaSpine;
        this.clipName = clipName;
    }
    canGoTo: string[] = ['running', 'failed'];
    stateIn = () => {
        this.SM.unscheduleAllCallbacks();
        this.SM.lockState(this.lockTime);
        SoundManager.instance.playSound('jump');
        this.SM.scheduleOnce(() => {
            this.SM.switchState('running');
        }, 0.6);
        this.charaSpine.addAnimation(0, this.clipName, false);
    };
    stateOut = () => {
        this.charaSpine.clearTracks();
    };
    lockTime = 0.6;
}

把需要的状态一一定义出来,包括跑,跳,左右移动,暂停,失败。此处举例两个,跳状态通过进入回调时添加定时任务回到跑状态即可自动落地。设置canGoTo即可进行操作锁,此处即跳跃中不可左右移动

export class CharacterSM extends Component {
    @property(sp.Skeleton)
    charaSkeleton!: sp.Skeleton;
    public states: { [key: string]: ICharaState } = {};
    public currentState!: ICharaState;

    public stateLocked: boolean = false;

    public lockState(duration: number) {
        this.stateLocked = true;
        this.scheduleOnce(() => {
            this.stateLocked = false;
        }, duration);
    }
    public switchState(stateName: string): boolean {
        console.log(`trying to sw
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Cocos Creator是一款集成化游戏开发工具,它可以帮助开发者快速构建游戏Cocos Creator框架文档就是为这个工具而设计的,它详细介绍了框架的各个方面: 1.游戏组件: Cocos Creator游戏组件是构成游戏逻辑的基本单位,如:精灵,动画,音效,等等。框架文档详细介绍了这些游戏组件的实现方式和使用方法。 2.游戏场景: 场景是游戏中不可或缺的一部分,游戏场景的绘制、布局、切换等功能在Cocos Creator中的实现方式和使用方法也被框架文档详细介绍了。 3.游戏节点管理: Cocos Creator中管理游戏节点的方式是通过层次结构进行管理,框架文档详细介绍了如何使用节点管理器来组织游戏节点。 4.贴图管理: 游戏中的图片资源在Cocos Creator中管理方式与其他游戏开发工具略有不同,框架文档详细介绍了如何使用贴图管理器来管理游戏中的图片资源,以及如何使用它们。 5.数据存储: 在游戏开发过程中,需要存储很多游戏数据,Cocos Creator提供了一套数据存储方案,框架文档详细介绍了如何使用数据存储器来存储、读取数据。 总之,框架文档为开发者提供了一个非常完整的Cocos Creator游戏开发体验,帮助开发者更好、更快地完成游戏开发工作。 ### 回答2: Cocoscreator是一款广泛使用的游戏开发工具,它支持多种平台,包括Web、iOS、Android等。针对这款工具,设计游戏框架文档是非常必要的。 游戏框架文档是对游戏开发中使用到的各种类、接口、函数等进行的系统化整理和说明,旨在帮助开发人员更加快速、高效地完成游戏的开发。针对cocoscreator,要编写的游戏框架文档必须包括以下内容: 1.场景和节点 这是cocoscreator的核心组成部分,开发人员应该了解和掌握它们的使用方法。文档可以详细介绍场景、节点的作用、属性和接口等,以及它们在开发过程中的使用场景和注意事项。 2.资源管理 在游戏开发中,资源管理是非常重要的,它关系到游戏的加载速度和性能。因此,游戏框架文档应该对资源加载、复用、释放等方面进行详细说明。 3.事件处理 事件处理是cocoscreator的另一大特色,文档中应该详细说明事件的相关接口和使用方法,包括监听事件、派发事件等。 4.动画和动作 cocoscreator提供了丰富的动画和动作接口,可以制作出生动、有趣的游戏效果。文档中应该详细介绍动画和动作的使用方法和属性等。 5.游戏逻辑和交互 游戏逻辑和交互是游戏的核心部分,文档应该对游戏逻辑和交互流程进行详细说明,以及说明与其他模块的关联和调用方式。 综上所述,设计cocoscreator游戏框架文档对游戏开发至关重要,只有编写出清晰、详尽的文档,才能帮助开发人员快速完成游戏开发,提高开发效率和游戏质量。 ### 回答3: Cocoscreator是一款非常强大的游戏开发引擎,它使用的是JavaScript语言进行编写。设计一款优秀的游戏框架,是成功开发一款游戏的重要因素之一。 Cocoscreator游戏框架文档包含以下几个方面的内容: 1.场景管理器 场景管理器是整个游戏框架中的核心部分,它主要负责游戏场景的管理。在这里可以创建新的场景、进入到不同的场景,以及场景之间的传递和切换。 2.游戏控制器 游戏控制器主要负责控制游戏逻辑,包括游戏运行时的场景、角色、道具等元素的控制和管理。它可以控制游戏的开始、暂停、继续、结束等操作。 3.角色控制器 角色控制器负责游戏中所有角色的控制和管理。它可以控制角色的移动、攻击、受伤、死亡以及角色之间的互动。 4.界面管理器 界面管理器主要负责游戏中所有界面的管理。界面是游戏中很重要的组成部分,它可以控制游戏的暂停、结束、返回主菜单等操作。 5.音效管理器 音效管理器负责游戏中所有音效的管理。在游戏中添加适当的音效可以增强游戏的娱乐性和吸引力,让游戏更加生动和有趣。 这些功能的协同工作,共同构成了一款成功的游戏框架。通过Cocoscreator游戏框架文档,我们可以更加系统和高效地进行游戏开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值