CocosCreator节点循路径移动+自动翻转朝向脚本

import { _decorator, Component, Node, tween, Vec3 } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('SheepMoveLToR')
export class SheepMoveLToR extends Component {
    @property([Node])
    movePointsTrans:Node[]=[];
    start() {
        if(this.movePointsTrans.length>0){
            this.moveAlongPath();
        }
    }

    moveAlongPath(){
        let points = this.movePointsTrans.map(point=>point.getPosition());
        let currentIndex=0;
        //递归方式让每次tween结束后继续下一个点循环
        const moveToNextPont=()=>{
            let targetPos  = points[currentIndex];
            currentIndex = (currentIndex+1)%points.length;//循环索引
            //创建新的tween动画,移动到目标点
            tween(this.node).to(1,{position:targetPos},{easing:'sineInOut'})//1s到达目标点
            .call(moveToNextPont)//tween结束后继续下一个点循环
            .start();
        };
        moveToNextPont();
    }
//每帧执行:自动翻转朝向
    update(deltaTime: number) {
        if(this.node.position.y>=0){
            this.node.setScale(-1,1);
        }else{
            this.node.setScale(1,1);
        }
    }
}

把路径节点转成坐标
使用递归 + tween 实现无限循环移动
去 A → 结束 → 去 B → 结束 → 去 C → 结束 → 回到 A
(currentIndex+1) % points.length
模运算 = 自动循环,不会越界
easing:'sineInOut'
平滑缓动,移动更自然,不是机械匀速

image.png

cocos设置好节点点位,引入ts脚本代码


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容