this.mainCamera.attachControl(this.canvas, true); this.scene.registerBeforeRender(function(){ console.log(typeof this.mainCamera); translateTransform = BABYLON.Vector3.TransformCoordinates(new BABYLON.Vector3(xAddPos/3000, 0, yAddPos/3000), BABYLON.Matrix.RotationY(this.mainCamera.Rotation.y)); this.mainCamera.cameraDirection.addInPlace(translateTransform); this.mainCamera.cameraRotation.y += xAddRot/15000*-0.1; this.mainCamera.cameraRotation.x += yAddRot/15000*-0.1; }); 为什么registerBeforeRender方法外mainCamera是对的,但在方法内就找不到mainCamera
时间: 2024-03-09 17:48:55 浏览: 122
这是因为在registerBeforeRender方法内的this指向的是该方法的上下文,而不是该方法所在的对象。因此,在方法内部访问该对象的属性和方法时,需要先将该对象保存在一个变量中,然后在方法内部使用该变量来访问该对象。例如,你可以在registerBeforeRender方法外部先声明一个变量,保存该对象的引用,然后在方法内部使用该变量来访问该对象的mainCamera属性。例如:
```
var self = this;
this.scene.registerBeforeRender(function(){
console.log(typeof self.mainCamera);
translateTransform = BABYLON.Vector3.TransformCoordinates(new BABYLON.Vector3(xAddPos/3000, 0, yAddPos/3000), BABYLON.Matrix.RotationY(self.mainCamera.Rotation.y));
self.mainCamera.cameraDirection.addInPlace(translateTransform);
self.mainCamera.cameraRotation.y += xAddRot/15000*-0.1;
self.mainCamera.cameraRotation.x += yAddRot/15000*-0.1;
});
```
这样就可以在registerBeforeRender方法内部访问到该对象的mainCamera属性了。
阅读全文