【发布时间】:2018-09-07 11:17:38
【问题描述】:
我正在尝试从实例化的导弹预制件中投射 2D 射线,如下所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyMissile : MonoBehaviour {
void Update () {
RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.down,1f);
Debug.DrawRay(transform.position, Vector2.down, Color.green);
if(hit)
{
print("Hit");
}
else
{
print("No hit");
}
}
}
Player 有一个 Rigidbody2D 和一个 BoxCollider2D 作为触发器:
EnemyMissile 有自己的 RigidBody2D 和 BoxCollider2D 作为触发器:
但是我看不到控制台上打印任何内容
从导弹发射射线的想法是在 EnemyMissile 向玩家飞去时播放 AudioClip。
我见过: Raycast Hit Collider is Always NULL Physics2D.Raycast returning null
感谢您的帮助。
EDIT 回答@Monofuse 评论:当我选择播放器时,变换是: x:0.4567,y:-1.58,z:0
当我选择导弹时,变换是: x:0.3699,y:-1.054,z:0
编辑回答@Ada Nub:
我默认选中了两个选项:Queries Hit Triggers 和 Queries Start in Colliders。
现在我在 Colliders 中取消了查询开始,但是结果是一样的,我在控制台上看不到打印:
【问题讨论】:
-
它们是否都在同一个 y 轴上?也许它们在 X 和 Z 上碰撞,但不在 Y 上。
-
啊,所以这是一个愚蠢的错误哈哈发生在我们最好的人身上:P
标签: c# unity3d game-physics raycasting