小编Spa*_*eyG的帖子

检测与精灵相交的光线

在鼠标单击时,我投影光线以查看哪些对象与点击相交.我有一堆Mesh对象可以使用.但是,当我将Sprite添加到对象列表时,从未检测到Sprite.

1)应该检测精灵吗?有什么东西让它们无法被发现吗?我需要做些什么来使它们看起来"稳固"吗?2)如果无法检测到Sprites,那么使它们可点击的最佳方法是什么?在他们周围添加隐形圆筒?

这是一些适用于Mesh的部分代码.

var containerPosition = $container.position();
var vector = new THREE.Vector3(((event.clientX - containerPosition.left) / scene.WIDTH) * 2 - 1, - ((event.clientY - containerPosition.top) / scene.HEIGHT) * 2 + 1, 0.5);
new THREE.Projector().unprojectVector(vector, scene.camera);
var ray = new THREE.Ray(scene.camera.position, vector.subSelf(scene.camera.position).normalize());
var intersects = ray.intersectObjects(scene.solidObjects);
if (intersects.length > 0) {
Run Code Online (Sandbox Code Playgroud)

three.js

6
推荐指数
1
解决办法
1418
查看次数

Moo对象扩展顺序

给下面的代码,似乎您实例化对象的顺序很重要。当我希望每个对象都使用不同的列表时,以下代码将为两个对象打印相同的列表,因为列表是在构建时创建的实例属性。

package t;

use Moo;
use Types::Standard qw(ArrayRef);

my @list = qw/foo bar baz/;

has list => (
    is => 'rw',
    isa => ArrayRef,
    default => sub {\@list}
);

1;
---
package u;

use Moo;
use Types::Standard qw(ArrayRef);
extends 't';

sub BUILD {
    my ($self) = @_;

    push @{$self->list()}, qw/apple banana/;
    return $self;
}
1;
---
#!perl

use Data::Printer;
use t;
use u;

my $u = u->new();
p $u->list();

my $t = t->new();
p $t->list();
Run Code Online (Sandbox Code Playgroud)

电流输出:

\ [
    [0] "foo", …
Run Code Online (Sandbox Code Playgroud)

perl

4
推荐指数
1
解决办法
59
查看次数

标签 统计

perl ×1

three.js ×1