Unity3d Unity编辑器脚本:类似BoxCollider的场景控件

Unity3d Unity编辑器脚本:类似BoxCollider的场景控件,unity3d,unity-editor,Unity3d,Unity Editor,我遇到了一些使用边界“伪造”碰撞器的场景,主要是当我只需要将一个对象保持在某个区域内(使用边界.Contains)并且不希望它参与物理时 我知道我可以使用触发器,但这需要一个专用的层,这不是一个选项,因为我的游戏是层外的 我创建了一个简单的BoundsHolder脚本,它使用本地大小/中心来计算边界。 我使用Gizmos.DrawWireCube在编辑器中显示它们,如下所示: 但是我想添加拖动控件BoxCollider来扩大我的边界: 我在google+上到处搜索,浏览文档,查找小发明和手柄

我遇到了一些使用
边界“伪造”碰撞器的场景,主要是当我只需要将一个对象保持在某个区域内(使用
边界.Contains
)并且不希望它参与物理时

我知道我可以使用触发器,但这需要一个专用的层,这不是一个选项,因为我的游戏是层外的

我创建了一个简单的
BoundsHolder
脚本,它使用本地大小/中心来计算边界。 我使用Gizmos.DrawWireCube在编辑器中显示它们,如下所示:

但是我想添加拖动控件
BoxCollider
来扩大我的边界:

我在google+上到处搜索,浏览文档,查找
小发明
手柄
——但那里的所有功能似乎都是关于绘制立方体,而不是调整工具大小

是否有一个内置工具来重新创建我丢失的内容?

如果没有-那么最好的方法是什么?


奖金问题-我的BoundsHolder使用轴对齐且不支持旋转的
UnityEngine.Bounds
。是否有支持旋转的替代版本?(并且仍然提供
Contains(Vector3)
API?)


谢谢

是的,手柄是用来画东西的,但也可以相互作用,这样你就可以真正抓住手柄了。 好吧,你必须自己实现对盒子的缩放。但是一个好的选择可能会有所帮助。或者创建一个

对于长方体碰撞器触发器,您可以查看(带方向的长方体的真/假命中测试)

或进入 (这会给你一个里面的游戏对象列表-如果你愿意,可以像“包含”一样使用)


由于您不需要额外的层,您可以将layermask设置为“everything”,并检查对象引用或标记以确保您拥有正确的对象。

有一种使用矩阵作为管道的渲染机制。所以如果你想让它移动,缩放,旋转 要做到这一点,如果我做同样的工作,那么我将从“transform.localToWorldMatrix”开始

Matrix4x4 Matrix4x4=transform.localToWorldMatrix

矩阵A

0吨

0吨

0吨

0 0 0 0

“矩阵A”、“T”的部分从该矩阵中删除部分,以便您可以更改或添加偏移量以从当前游戏对象移动更多。 然后,把它画成这样

public void OnDrawGizmosSelected()
{
    Matrix4x4 matrix4x4 = transform.localToWorldMatrix;

    ....
    ....
    do something with "matrix4x4" here


    Gizmos.matrix = matrix4x4; // apply matrix to move/scale/rotate
    Gizmos.DrawCube(..)
}