[LayaAir 2.0]3d显示对象克隆体超出舞台不再显示的bug2.1.0.btea1

使用的模型是官方的小猴子模型
按a键左移动 d键右移动
舞台上的两只小猴 右边是加载出来的本体
左边是克隆体
按a键移动出舞台 就会发现 克隆体消失了
但是本体无恙
非常诡异!
 
已邀请:

Aar0n

赞同来自: lifereset maoxiaolu

20190621111034.png

Animator 类照着这里 加一行

maoxiaolu

赞同来自:

import { ui } from "./../ui/layaMaxUI";
import Scene3D = Laya.Scene3D;
import Sprite3D = Laya.Sprite3D;
/**
* 本示例采用非脚本的方式实现,而使用继承页面基类,实现页面逻辑。在IDE里面设置场景的Runtime属性即可和场景进行关联
* 相比脚本方式,继承式页面类,可以直接使用页面定义的属性(通过IDE内var属性定义),比如this.tipLbll,this.scoreLbl,具有代码提示效果
* 建议:如果是页面级的逻辑,需要频繁访问页面内多个元素,使用继承式写法,如果是独立小模块,功能单一,建议用脚本方式实现,比如子弹脚本。
*/
export default class GameUI extends ui.test.TestSceneUI {

scene3d:Laya.Scene3D;
sp:Laya.Sprite3D;
sp2:Laya.Sprite3D;

translateA = new Laya.Vector3(-0.05, 0, 0);
translateD = new Laya.Vector3( 0.05, 0, 0);

constructor() {
super();

//添加3D场景
var scene: Laya.Scene3D = Laya.stage.addChild(new Laya.Scene3D()) as Laya.Scene3D;
this.scene3d = scene;

//添加照相机
var camera: Laya.Camera = (scene.addChild(new Laya.Camera(0, 0.1, 100))) as Laya.Camera;
camera.transform.translate(new Laya.Vector3(0, 3, 3));
camera.transform.rotate(new Laya.Vector3(-30, 0, 0), true, false);

//添加方向光
var directionLight: Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;
directionLight.color = new Laya.Vector3(0.6, 0.6, 0.6);
directionLight.transform.worldMatrix.setForward(new Laya.Vector3(1, -1, 0));

Laya.Sprite3D.load("h5/LayaMonkey/LayaMonkey.lh",Laya.Handler.create(this,this.ok));

}

ok(sp:Laya.Sprite3D):void{
//得到原始Sprite3D
this.sp = sp;
this.scene3d.addChild(sp);
//克隆Sprite3D
this.sp2 = Laya.Sprite3D.instantiate(this.sp,null,false);
//错开点位置
this.sp2.transform.translate(new Laya.Vector3(-0.2, 0, 0));
this.scene3d.addChild(this.sp2);
//添加键盘控制
Laya.timer.frameLoop(1, this, this.onKeyDown);
}

onKeyDown() {
//按A / D 键移动两个模型,sp正常 sp2如果出屏幕就会消失
Laya.KeyBoardManager.hasKeyDown(65) && this.sp.transform.translate(this.translateA);//A
Laya.KeyBoardManager.hasKeyDown(68) && this.sp.transform.translate(this.translateD);//D

Laya.KeyBoardManager.hasKeyDown(65) && this.sp2.transform.translate(this.translateA);//A
Laya.KeyBoardManager.hasKeyDown(68) && this.sp2.transform.translate(this.translateD);//D
}
}
上代码,克隆体小猴子出了屏幕就会消失

maoxiaolu

赞同来自:

用log分别输出了本体对象 和 克隆体:
 
大体上看有处不同:
本体有属性
_url:"D:/test/Game3D02/bin/h5/LayaMonkey/LayaMonkey.lh"
url:"D:/test/Game3D02/bin/h5/LayaMonkey/LayaMonkey.lh"
 
而克隆体
url:undefined
 
不知道和这个有没有关系
 

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作