shw*_*ick 7 c# unity-game-engine unityscript
我需要一个不会碰撞但也会为碰撞提供接触点的2d传感器。
扳机不给我接触点,对撞机给我接触点,但会引起碰撞。
我已经尝试过使用碰撞器时禁用碰撞,以期使碰撞进入回调,但实际上没有发生碰撞,但是没有运气。
那么,如何从触发器获取联系点?或者如何在不引起碰撞的情况下使用刚体获得碰撞回调?
基本上,我有一个想充当雷达的圆圈,但我希望它在接触点方面也相当准确。
Max*_*ari 10
发帖是因为这是 Google 的最高结果。
我认为有一种比光线投射更简单(当然取决于你如何看待它)和更精确的方法来做到这一点。
private void OnTriggerEnter(Collider collider)
{
var collisionPoint = collider.ClosestPoint(transform.position);
}
Run Code Online (Sandbox Code Playgroud)
collider是进入相关触发器的碰撞器,transform是触发器的变换。正如函数名称所示,此填充会在碰撞体上找到最接近所述触发器的点。当然,这并不是非常精确,特别是对于形状怪异的碰撞器来说,但很可能对于大多数情况来说它已经足够好了,对于射弹(或者说刀片)击中刚体角色来说绝对足够好。
作为奖励,这里有一个简单的向量数学来查找碰撞法线:
var collisionNormal = transform.position - collisionPoint;
Run Code Online (Sandbox Code Playgroud)
再次强调,不是超级精确,也不是撞击点的实际正确法线(即垂直),但与前一个一样 - 很可能已经足够好了。
玩得开心!
您应该使用OnCollisionEnter但添加一个rigidbody到它并设置isTrigger为false并将刚体设置isKinematic为true然后它将充当触发器,您可以获得这样的接触点
void OnCollisionEnter(Collision collision) {
foreach (ContactPoint contact in collision.contacts) {
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11049 次 |
| 最近记录: |