c# - OverlapBox 比我问他的要多
问题描述
我有一个角色,我在他的脸上创建了一个重叠框,我通过 Gizmo 绘制它,但由于某种原因,它甚至在对象进入 Gizmo 绘制的区域之前检测到它。如果我创建overlapSphere,那么一切正常
private Vector3 overlapPos, overlapSize;
private void Attack()
{
if(Input.GetKeyDown(KeyCode.Mouse1))
{
var cam = Vector3.Scale(transform.forward, new Vector3(1, 0, 1)).normalized;
overlapPos = new Vector3(transform.position.x, transform.position.y + 1.2f, transform.position.z);
overlapPos += cam*1.2f ;
overlapSize = new Vector3(2.5f, 1.7f, 2f);
Physics.SyncTransforms();
var enemys = Physics.OverlapBox(overlapPos, overlapSize, transform.localRotation);
foreach (Collider col in enemys)
print(col.gameObject.name);
//enemyGO.GetComponent<HealthComponent>().TakeDamage(10);
}
}
void FixedUpdate()
{
Attack();
}
private void OnDrawGizmos()
{
Gizmos.color = Color.green;
Gizmos.matrix = Matrix4x4.TRS(overlapPos,transform.localRotation, overlapSize);
Gizmos.DrawWireCube(Vector3.zero, Vector3.one);
}
解决方案
注意OverlapBox
调用的第二个参数halfExtends
每个维度中盒子大小的一半。
因此,您宁愿使用重叠框的一半大小
Physics.OverlapBox(overlapPos, overlapSize * 0.5f, transform.localRotation);
或者必须更改 Gizmo 以显示更正的双倍大小
Gizmos.DrawWireCube(Vector3.zero, Vector3.one * 2);
推荐阅读
- typescript - typescript 实例化类型定义
- database - 设置 WP 站点的本地副本后,主页可以工作,但所有其他链接都会抛出错误
- mongodb - mongodb 聚合管道中的 $getField 等效项
- sql - 峰度函数不好用
- c++ - 矢量类如何接受多个参数并从中创建一个数组?
- html - 使固定的伪 div 与父级宽度相同
- javascript - Word 加载项 JavaScript 从文档加载文本
- shell - Shell - 删除重复的段落
- vba - 获取文件夹和子文件夹中的列表文件
- ios - “reserveCapacity”函数如何与 Swift 中的“Dictionary”CollectionType 一起使用?