Как я уже написал - нулевая, при этом периодически спавнится там, где и должна , а также при любом движении её положение становится правильным( этого бы не происходило, будь у меня ошибка в префабе)
Мимокрокодил, Насчёт нерабочего кода - я не заметил при копировании, почему-то просто пропала часть , хотя она там, естественно, везде есть. Спасибо за советы, попробую протестировать предложенные Вами варианты, если ничего не получится - постараюсь выкрутиться как-то иначе, но ,опять же, спасибо за уделённое время
Ещё замечу, что делал DrawRay по совету человека повыше - опять же рисуется луч из точки, которая явно выше оружия. В самом коде пока что есть несколько временных костылей для простоты проверки работоспособности, поэтому сложно читаться будет, наверное
У оружия коллайдера нет в принципе. К тому же при первом касании коллайдера пуля уничтожается.
У пули пытался полностью отключить скрипт - не повлияло ни на что, полностью комментировал и скрипт оружия( кроме строки Instantiate ) - эффекта тоже не было. Зато, как я уже писал чуть выше, проблема прошла, когда перезапустил unity , при этом при создании нового оружия - появляется на нём
Тут скрипт пистолета :
public class Pistol : MonoBehaviour
{
[SerializeField] private GameObject Bullet;
[SerializeField] private Camera PlayerCam;
[SerializeField] private bool AddBulletSpread = true;
private Vector3 BulletSpread = new Vector3(0.05f, 0.05f, 0.05f);
[SerializeField] private ParticleSystem ShootingParticle;
[SerializeField] private Transform BulletSpawnPoint;
private float Range = 10000f;
[SerializeField] private LayerMask IgnorePlayer;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (transform.parent != null)
{
if (transform.parent.gameObject.layer == 3)
{
Shoot();
}
}
}
}
private void Shoot()
{
Instantiate(ShootingParticle, BulletSpawnPoint);
Vector3 BulletDirection = PlayerCam.transform.forward;
BulletDirection = GetDirection();
Physics.Raycast(PlayerCam.transform.position, BulletDirection, out RaycastHit hit, Range, IgnorePlayer);
GameObject BulletObj = Instantiate(Bullet, BulletSpawnPoint.position, Quaternion.identity) as GameObject;
Debug.DrawRay(BulletSpawnPoint.position, BulletDirection * 100f, Color.red);
BulletObj.GetComponent().hit = hit;
BulletObj.GetComponent().BulletDirection = BulletDirection;
BulletObj.GetComponent().Shooter = gameObject;
BulletObj.GetComponent().StartPosition = PlayerCam.transform.position;
BulletObj.GetComponent().velocity = (hit.point - BulletSpawnPoint.position).normalized * 15;
}
public class Bullet : MonoBehaviour
{
public float BulletDamage = 10f;
public ParticleSystem ImpactParticle;
public RaycastHit hit;
public Vector3 StartPosition;
public Vector3 BulletDirection;
private int ShotObjectLayer=10;
private int NormalLayer;
[SerializeField] private LayerMask ShotObject;
public GameObject Shooter;
//public GameObject Shooter;
Если я правильно понял, через RayCast придётся урон делать одновременно с выстрелом, что мне не особо понравилось, а ещё пули могут друг друга сбить, что я решил добавить к себе, поэтому делаю через GameObject. Насчёт совета - луч рисуется не из того места( а из того, где появляется пуля). Случайно выяснил, что перезапуск unity фиксит баг, но если создаю новый пистолет/автомат, то они снова будут багованные (до следующего перезапуска)
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.