laya 克隆精灵 - 关于Laya.Sprite3D.instantiate的用法

laya 克隆精灵(结点)的方法 - 关于Laya.Sprite3D.instantiate的用法


有时候需要克隆精灵,常用的有clone和cloneTo,另外还有一个方法,可以直接加入场景中

先看下该方法的源码
/**
 * 创建精灵的克隆实例。
 * @param	original  原始精灵。
 * @param   parent    父节点。
 * @param   worldPositionStays 是否保持自身世界变换。
 * @param	position  世界位置,worldPositionStays为false时生效。
 * @param	rotation  世界旋转,worldPositionStays为false时生效。
 * @return  克隆实例。
 */
static instantiate(original: Sprite3D, parent: Node = null, worldPositionStays: boolean = true, position: Vector3 = null, rotation: Quaternion = null): Sprite3D {
	var destSprite3D: Sprite3D = (<Sprite3D>original.clone());
	(parent) && (parent.addChild(destSprite3D));
	var transform: Transform3D = destSprite3D.transform;
	if (worldPositionStays) {
		var worldMatrix: Matrix4x4 = transform.worldMatrix;
		original.transform.worldMatrix.cloneTo(worldMatrix);
		transform.worldMatrix = worldMatrix;
	} else {
		(position) && (transform.position = position);
		(rotation) && (transform.rotation = rotation);
	}
	return destSprite3D;
}

看完就很明白了,是封装了一层,还是用了clone(),只有worldPositionStays为false,后面两个参数才会有用


用法
  1. 不保持自身世界变换

    let scene: Laya.Scene3D = this.scene;
    let posV3: Laya.Vector3 = new Laya.Vector3();
    let tempQua: Laya.Quaternion = new Laya.Quaternion();
    let tempQua1: Laya.Quaternion = new Laya.Quaternion();
    Laya.Quaternion.createFromYawPitchRoll(0, 0, 0, tempQua);
    tempQua.cloneTo(tempQua1);
    let role: Laya.Sprite3D = Laya.Sprite3D.instantiate(Laya.loader.getRes(resName), scene, false, posV3, tempQua1) as Laya.Sprite3D;
    
  2. 保持自身世界变换

    let scene: Laya.Scene3D = this.scene;
    let posV3: Laya.Vector3 = new Laya.Vector3();
    let role: Laya.Sprite3D = Laya.Sprite3D.instantiate(Laya.loader.getRes(resName), scene) as Laya.Sprite3D;
    role.transform.position = posV3;
    

维尼聚合工具


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值