Skip to content
冲量对象

冲量对象

阅读本文预计 10 分钟

本文概述了编辑器中冲量对象的相关定义及使用方法。

什么是冲量对象

冲量对象是一种冲量力的集合,可以对角色或开启物理模拟的模型施加冲量力,使其发生物理模拟运动.

冲量对象属性

属性说明
启用在运行时立即启用冲量对象功能,关闭后可以通过脚本来动态启用.

冲量类型

属性说明
绝对冲量不受其他物理效果影响,以设置属性为标准执行冲量运动
相对冲量受其他物理效果影响,将对象当前的运动数据与设置属性合并计算冲量结果

冲量值

属性说明
冲量值设置各轴方向上的冲量力

注意事项

冲量不受当前世界重力影响,直接产生物理模拟结果。

冲量力类型

属性说明
矢量力向某个方向施加一个冲量
径向力以圆心向外施加一个冲量

如何使用冲量对象

在本地资源库中搜索[冲量对象],找到功能对象,,拖入到场景中即可完成创建。

冲量对象高级使用方法

冲量对象回调

ts
@Component
export default class NewScript1 extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        let impulseMain = this.gameObject as mw.Impulse; //指定冲量对象

        //冲量对象提供了回调方法
        impulseMain.onImpulseEnter.add((chara: mw.Character) => {
            console.log(`角色进入冲量范围`);
        })
    }
}
@Component
export default class NewScript1 extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        let impulseMain = this.gameObject as mw.Impulse; //指定冲量对象

        //冲量对象提供了回调方法
        impulseMain.onImpulseEnter.add((chara: mw.Character) => {
            console.log(`角色进入冲量范围`);
        })
    }
}

冲量对象动态开关

ts
@Component
export default class NewScript extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        //通过GUID来动态创建一个冲量对象,并设置世界坐标
        let impulseSpawn = GameObject.spawn<Impulse>("PhysicsImpulse",{
            replicates:true,
            transform:new Transform(new Vector(300,0,0),Rotation.zero,Vector.one)
        });

        /**
         * 设置冲量对象的属性,制作一个向Z轴的绝对冲量;
         */
        impulseSpawn.impulseForceType = ImpulseForceType.VectorForce;
        impulseSpawn.impulseType = ImpulseType.Absolute;
        impulseSpawn.impulseVector = new Vector(0,0,800);

        //通过UI按钮发送一个本地事件,来触发冲量对象开启
        Event.addLocalListener("boom", () => {
            impulseSpawn.enable = true;  //将冲量对象设置为开启状态
        });
    }
}
@Component
export default class NewScript extends Script {

    /** 当脚本被实例后,会在第一帧更新前调用此函数 */
    protected onStart(): void {

        //通过GUID来动态创建一个冲量对象,并设置世界坐标
        let impulseSpawn = GameObject.spawn<Impulse>("PhysicsImpulse",{
            replicates:true,
            transform:new Transform(new Vector(300,0,0),Rotation.zero,Vector.one)
        });

        /**
         * 设置冲量对象的属性,制作一个向Z轴的绝对冲量;
         */
        impulseSpawn.impulseForceType = ImpulseForceType.VectorForce;
        impulseSpawn.impulseType = ImpulseType.Absolute;
        impulseSpawn.impulseVector = new Vector(0,0,800);

        //通过UI按钮发送一个本地事件,来触发冲量对象开启
        Event.addLocalListener("boom", () => {
            impulseSpawn.enable = true;  //将冲量对象设置为开启状态
        });
    }
}