Unity3d 为什么我的光线投射有时会朝着错误的方向拍摄
我试着用XR手拿着一把枪,从枪前的一个游戏物体上拍摄光线投射。这把枪大部分时间都拍得很好,但有时,由于一些我脆弱的小脑袋无法理解的原因,它朝着错误的方向拍摄。它朝着随机的方向拍摄,但从来不会超过它应该在的位置的90度。这s是我的代码。[我附上了它发生的视频。][1]每次我认为我找到了一个模式,它就会改变。我所能说的就是我有理由相信它与网格碰撞器有关。但原因非常模糊。编辑:https://youtu.be/JxC4wq9nVRw 这是一个更新的视频,它更清楚地显示了问题。我还更改了冗余的if语句Unity3d 为什么我的光线投射有时会朝着错误的方向拍摄,unity3d,virtual-reality,raycasting,Unity3d,Virtual Reality,Raycasting,我试着用XR手拿着一把枪,从枪前的一个游戏物体上拍摄光线投射。这把枪大部分时间都拍得很好,但有时,由于一些我脆弱的小脑袋无法理解的原因,它朝着错误的方向拍摄。它朝着随机的方向拍摄,但从来不会超过它应该在的位置的90度。这s是我的代码。[我附上了它发生的视频。][1]每次我认为我找到了一个模式,它就会改变。我所能说的就是我有理由相信它与网格碰撞器有关。但原因非常模糊。编辑:https://youtu.be/JxC4wq9nVRw 这是一个更新的视频,它更清楚地显示了问题。我还更改了冗余的if语句
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class GunBasic : MonoBehaviour
{
public Transform BulletShootPoint;
public ParticleSystem muzzleFlash;
public GameObject impactEffect;
public AudioSource audioSource;
public AudioClip audioClip;
public float Ammo;
public TextMeshPro text;
public void Fire()
{if (Ammo > 0)
{
muzzleFlash.Play();
audioSource.PlayOneShot(audioClip);
RaycastHit hit;
if (Physics.Raycast(BulletShootPoint.transform.position, BulletShootPoint.transform.forward, out hit) && Ammo > 0)
{
Debug.Log(hit.transform.name);
GameObject impactDestroy = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactDestroy, 2f);
}
Ammo -= 1f;
}
}
private void Update()
{
text.text = Ammo.ToString();
}
public void Reload()
{
Ammo = 10;
}
public void OnTriggerEnter(Collider other)
{
if(other.tag == "ReloadTag")
{
Ammo = 10f;
}
}
}
这是xr interaction toolkit中的一个错误。它已被更新修复。很抱歉,我没有尽快尝试,感谢所有的帮助。我有点不确定我到底应该在视频中看到什么^^^^,而且一般来说,你为什么要检查
Ammo>0
三次?@derHugo谢谢你的评论,在视频中你可以看到raycast sh从枪中射出错误的方向。它从门外的一个位置移动到枪的右前方它应该在的位置。枪一直没有移动,至少不足以证明光线投射发生如此巨大的变化。这可能很难看到,但位于错误位置的冲击效果就在枪的左侧外面的门。可能应该让平行光更亮。另外,我检查了三次弹药,因为我是个白痴。我会解决的,谢谢你指出。很可能是其他东西在移动/旋转你的子弹射击点,这个脚本不会在任何地方改变它。顺便说一句@derHugo是对的,你不需要检查子弹射击点mmo在任何时候,你都可以删除检查,只需将Fire()
方法的第一行添加为if(ammo<1)return;
@Nikaas谢谢,我也是这么想的,但我在玩的时候暂停了它,它看起来非常好。我会在早上再试一次,也许我会看到一些不同的东西,因为它有时会工作。似乎你的BulletShootPoint
旋转与此的旋转没有正确对齐GunBasic
对象本身…似乎随着您的观察方向而不是相机的观察方向移动