我的子弹无法检测到对撞机,而光线投射无法检测到碰撞。这很奇怪,因为在我的地形范围内(无论是在上面还是在上面)拍摄子弹时,在控制台上获取信息的唯一方法是,我立即在我的控制台上打印“Terrain”,但是光线投射无法检测到任何其他对象和打印任何东西,如果我走出范围并射击球体,则不会打印任何内容。除了子弹外,我游戏中的所有东西都有一个对撞机。
谢谢!
void Update () {
if (Input.GetKey(KeyCode.KeypadEnter) && counter > delayTime)
{
Instantiate(bullet, transform.position, transform.rotation);
counter = 0;
RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit))
{
Debug.Log(hit.collider.gameObject.name);
}
}
counter += Time.deltaTime;
}
答案 0 :(得分:0)
在您的子弹预制件上添加对撞机。您应该在敌人或其他可破坏物体上贴上标签。使用OnCollisionEnter或OnTriggerEnter。对于敌人,我更喜欢在大多数情况下使用OnCollisionEnter。
void OnCollisionEnter(Collision collision){//Assuming bullet touches enemy
if(collision.tag=="Bullet"){
// insert your code here for damage
}
}
就您的RayCast而言,我会做这样的事情:
Vector3 fwd = transform.TransformDirection(Vector3.forward) * 3; // length of ray
//forward-facing. ( * 3 is equal to 3 units/Meters )
Debug.DrawRay(transform.position, fwd, Color.red); // Can Make any color
if (Physics.Raycast(transform.position, fwd, out hit))
{
print(hit.collider.gameObject.name);
}
看,我使用碰撞检测的原因是,只要标记了敌人,您就可以进行接触。否则,您的射线广播应该会检测到接触,并且您仍然可以设置碰撞伤害或其他任何原因。