Laya3d碰撞后退表现算法

1.3D精灵碰撞,后退表现:

(1)定义后退移动的开关,速度向量,移动时间间隔

        var vec3 = new Laya.Vector3();
        
        //后退移动速度倍率
        this.strikeBackSpeed = 12;
        //后退持续时间
        this.strikeDuration = 200;
        //是否正在后退
        this._isStriking$ = false;
        //后退移动速度向量
        this._strikingCurrentMovingSpeed$ = new Laya.Vector3();

(2)发生碰撞时,触发碰撞后退:

    /** 与同等级的恐龙碰撞弹开 */
    strikeBack(otherDinosaur) {                   //碰撞它的3D精灵
        if (this._isStriking$) return;
        this.owner.transform.getForward(vec3);   //被碰撞的3D精灵的位置
        if (otherDinosaur) {
            let curPos = this.owner.transform.position;
            let dir = new Laya.Vector3();
            Laya.Vector3.subtract(otherDinosaur.owner.transform.position, curPos, dir);
            let forward = new Laya.Vector3();
            Laya.Vector3.scale(vec3, -1, forward);//通过实验得知获取的向量反向为前进的向量
            if (Laya.Vector3.dot(dir, forward) < 0) return;
        }
        Laya.Vector3.scale(vec3, this.strikeBackSpeed, this._strikingCurrentMovingSpeed$);
        this._isStriking$ = true;
        this.owner.timerOnce(this.strikeDuration, this, () => {
            this._isStriking$ = false;
        });
    }

(3)onUpdate中更新位置:

onUpdate() {
         if (this._isStriking$) {
             let e = Math.min(Laya.timer.delta * 0.001, 1 / 30);
             this._strikingBackMove$(e);
         }
    }

(4)实际发生位移的函数:

    /**
     * 和同等级的恐龙碰撞弹开
     * @param {*} e 缩放值
     */
    _strikingBackMove$(e) {
        let transform = this.owner.transform;
        Laya.Vector3.scale(this._strikingCurrentMovingSpeed$, e, vec3);
        Laya.Vector3.add(transform.position, vec3, vec3);
        transform.position = vec3;
    }

相关推荐

  1. Laya3d碰撞后退表现算法

    2024-01-03 10:44:03       43 阅读
  2. Cocos Creator 3D物理引擎的碰撞检测与触发器详解

    2024-01-03 10:44:03       7 阅读
  3. 【名词解释】Unity中的3D物理系统:碰撞

    2024-01-03 10:44:03       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-03 10:44:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-03 10:44:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-03 10:44:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-03 10:44:03       18 阅读

热门阅读

  1. 5分钟带你解决Promise疑难杂症

    2024-01-03 10:44:03       34 阅读
  2. pytorch 转 onnx

    2024-01-03 10:44:03       32 阅读
  3. flask web学习之flask与http(四)

    2024-01-03 10:44:03       35 阅读
  4. torch.where用法介绍

    2024-01-03 10:44:03       37 阅读
  5. 构建一个动态时钟

    2024-01-03 10:44:03       34 阅读
  6. nginx,ssl,证书和校验

    2024-01-03 10:44:03       33 阅读
  7. FTP服务器安装、远程访问以及安全配置项

    2024-01-03 10:44:03       41 阅读
  8. 计算机网络---知识点

    2024-01-03 10:44:03       41 阅读
  9. 碳中和服务认证流程、价格、意义

    2024-01-03 10:44:03       35 阅读