【求助】cocos2dx 3.x 如何让随机运动的小精灵检测地图碰撞

LZ创建的TMX地图设有碰撞层,为不可移动,不可穿越的障碍,
接着设定随机在TMX地图上移动的精灵,如何让精灵在移动的过程中绕过设好的碰撞层,求助思路。。。

让精灵移动前,检测下一点是否在碰撞层上?如果在,就转方向。还可以递归下去

是这样的,我用了MoveTo,随机移动是随机出来的坐标,如果只是单纯地检测下一个到达的坐标点,在MoveTo的过程中还是会跨过墙…

先判定moveTo过程中会不会经过墙

请问有什么办法能让创建的精灵AI具有A*算法,随机出终点坐标后,自动寻路过去?

我觉得,这种情况最好还是在update里写算法,不要用moveto,以后想添加和其他东西的碰撞也比较容易

嗯,的确,用定时器会好很多,
请问有什么参照例子吗,每一帧都调用update应该是怎样的,新手求教。。

首先,在scene,或者你的控制类的init中调用scheduleUpdate()方法(需要继承自Node),再重写void update(float dt)这个方法
具体schedule的用法,你可以百度一下,有很多

下面就是你的逻辑了,update默认每帧调用一次,dt是帧所消耗的时间,单位:秒
下面是伪代码

Node* a;// 需要检测的Node,或者Sprite等
Vec2 speed (random,random); // 移动速度,包括方向
update(float dt){
    do {
        Vec2 tempPosition = a->getPosition() + speed * dt;

        if ( tempPosition撞墙 ){
            重置speed;
        }else{
            a->setPosition(tempPosition);
            break;
        }
    } while (true);
}

具体怎么优化,就要看你上下文代码咯