我正在尝试从我的相机中对鼠标进行光线投射,以便在我的场景中对网格进行一些悬停和点击事件.
我的问题是,我的相机目前是另一个网格的子对象(为了更容易的相机移动/旋转),现在我的光线投射不起作用(我假设因为相机是网格的孩子,而不是场景).
这是我的代码的一部分:
//camera setup
var camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 0.1, 1000);
var cameraTargetGeom = new THREE.SphereGeometry(0.5);
var cameraTargetMaterial = new THREE.MeshLambertMaterial({color: 0xff0000, ambient: 0xff0000});
var cameraTarget = new THREE.Mesh(cameraTargetGeom, cameraTargetMaterial);
cameraTarget.position.set(0.15, 0, 5);
scene.add(cameraTarget);
cameraTarget.add(camera);
camera.position.y = 18;
camera.rotation.x = Math.PI * -90 / 180;
// click event
renderer.domElement.addEventListener('click', clickedCanvas);
function clickedCanvas(e) {
e.preventDefault();
mouse.x = (e.clientX / renderer.domElement.width) * 2 - 1;
mouse.y = -(e.clientY / renderer.domElement.height) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
var intersects = raycaster.intersectObjects(scene.children, …Run Code Online (Sandbox Code Playgroud) 我正在使用此功能来创建一些导航按钮.
func create(size:CGFloat, y:CGFloat, button:Dictionary<String, String>) -> UIButton {
// setup size variables
let width = size;
var height = size;
if button["position"] == "top" || button["position"] == "bottom" {
height = size+1;
}
var marginTop:CGFloat = 1
if button["position"] == "top" {
marginTop = 0
}
// create button
let btn = UIButton(frame: CGRectMake(UIScreen.mainScreen().bounds.width-width, y*size, width, height))
// background image
let bgImage = UIImageView(frame: CGRectMake(0, marginTop, width, height-2))
bgImage.image = UIImage(named: "nav-bg.png")
// background image active
var bgImageActive = …Run Code Online (Sandbox Code Playgroud)