CocosCreator之KUOKUO趣味文章:小怪要绕墙 3

引擎版本 v2.0.8

恢复视野

继续故事,小怪在黑夜中失去了视野。它找不到玩家的位置,只好自己在默默的思考,开发自己大脑。
渐渐地,小怪可以每秒钟思考两次了。

properties: {
        thinkCD : 0.5
    },

update (dt) {
        // 1 秒 2 次
        this.time += dt;
        if (this.time >= this.thinkCD) {
            this.time = 0;
            //  执行一些方法
        }
    }
玩家的一堵墙

等到迷雾散去,小怪的视野恢复了。但是!!!
玩家不知何时竟然造了一堵墙。
小怪过不去。。。
啊!!!!可恶的人类!
在这里插入图片描述
补充
玩家与小怪加入刚体和物理碰撞盒子,设置不允许睡眠,重力为0,墙就设置为静态刚体。
在这里插入图片描述
全部:
在这里插入图片描述
记得开启物理系统:

onLoad () {
        // 开启物理
        cc.director.getPhysicsManager().enabled = true;
      }
小怪的思考

目前的情况:
在这里插入图片描述
如何不被墙挡住呢?
小怪开始思考!!!
如果。。。我前进不了就向下走呢!
尝试值
每一次的改变方向都应再次尝试下靠近玩家。
代码

onLoad () {
        // 开启物理
        cc.director.getPhysicsManager().enabled = true;
        // 间接向量
        this.vector = cc.v2(0,0);
        // 间接时间变量
        this.time = 0;
        // 间接位置
        this.temp = cc.v2(0,0);
        // 尝试次数
        this.try = 0;
    },

    update (dt) {
        // 1 秒 2 次
        this.time += dt;
        if (this.time >= this.thinkCD) {
            this.time = 0;
            // 向量减法,计算方向向量
            this.vector = this.player.position.sub(this.node.position);
            // 判断是不是被墙挡住了,与上一次位置比较
            if (Math.abs(this.node.x - this.temp.x) < 1) {
                // 尝试值
                this.try += 1;
                // 尝试一次后不通,改变方向
                if (this.try >= 2) {
                    this.try = 0;
                    this.vector.set (cc.v2(0,-100));
                }
            }
            // 记录新位置
            this.temp.set(this.node.position);
        }
        this.walkTo(this.vector, dt);
    },

效果
在这里插入图片描述
如果不想让小怪旋转:
在这里插入图片描述
效果
在这里插入图片描述

哇咔咔!!!
玩家看你哪里跑!!!

O(∩_∩)O~~

猜你喜欢

转载自blog.csdn.net/kuokuo666/article/details/88749725