[Cocos Creator] 踩坑日记(三)-路径移动问题及为其添加Promise

本文详细介绍了在Cocos Creator中如何处理人物模型在地图上的路径移动,包括路径生成、动态改变方向以及如何利用Promise解决移动结束后执行其他动作的回调问题。在移动过程中,用户可以随时改变目标点,导致原有的移动路径需要动态更新。文章最后讨论了Promise在处理移动结束回调中的应用,解决了旧Promise无法正确resolve的问题。
摘要由CSDN通过智能技术生成

背景:一个人物模型Actor与一张地图map,在地图上人物随意移动,比如能从A点到B点,或A点到B点过程中用户点击C点,那么改变移动方向到C点,在移动结束后执行其它人物动作Action

路径移动

首先我们能联想到的是cc.moveBy或cc.moveTo实现一格的移动,通过给出的路径path[ point1 , point2, ..., B]到达B点。

1. 生成路径path: generatePath(A, B, map?)(函数实现略)

2. 添加路径并移动: Actor.move(path)

    move( path){
        if( path == null || path == undefined || path. length == 0 )
            return;
        else{
            this . path = path ;
            this. _move( path);
        }
}

3. 一格移动: Actor._move(point)

    _move( path){
        // path = [ point1 , point2, ..., B]
        if( this. moveActions!= null && ! this. moveActions. isDone()) {
             // 上个动作没有完成,记录下path等之后完成
            this. path = path;
            return;
        } else{
            this. moveActions = new cc. ActionInterval();
            let nextSite = this. path. splice( 0, 1)[ 0];
            if( nextSite){
                 // 换算成网格移动所需要的x, y
                let x = ( nextSite. x - this. actor. x) * this. node. width,
                y = - ( nextSite. y - this. actor. y) * this. node. height;
                 // cc.moveBy移动一格,通过cc.sequence与cc.callFunc组合,实现移动一格结束后的回调
                this. moveActions = cc. sequence( cc. moveBy(
Cocos Creator是一款基于Cocos2d-x游戏引擎的游戏开发工具,它提供了丰富的API和功能来开发移动端和Web游戏。在Cocos Creator中实现路径移动,可以通过以下步骤进行操作: 1. 创建路径点:在场景中创建一个节点作为路径点,可以使用Sprite组件来可视化路径点。通过设置节点的position属性,可以确定路径点在场景中的位置。 2. 创建移动对象:在场景中创建一个需要进行路径移动的对象,可以是玩家角色、敌人或其他游戏元素。添加相应的脚本组件来控制对象的移动。 3. 设置路径移动逻辑:在移动对象的脚本组件中,设置路径移动的逻辑。可以使用定时器或帧事件来控制移动对象的移动速度和路径点的切换。 4. 实现路径点的移动:在移动对象的脚本组件中,使用Cocos Creator提供的移动方法(例如cc.moveTo、cc.moveBy)来实现从当前位置到下一个路径点的移动。 5. 路径点的切换:在移动对象的脚本组件中,根据移动对象当前位置和路径点之间的距离,判断是否需要切换到下一个路径点。当移动对象接近当前路径点时,通过代码设置移动对象的目标位置为下一个路径点的位置。 6. 循环移动:根据游戏需求,可以设置移动对象是否需要循环移动路径点。如果需要循环移动,当移动对象到达最后一个路径点时,将其目标位置设置为第一个路径点的位置。 通过以上步骤,在Cocos Creator中可以实现路径移动的效果。可以根据具体的游戏需求进行调整和扩展,添加更多的逻辑和动画效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值