Quantcast
Channel: Questions in topic: "error message"
Viewing all articles
Browse latest Browse all 2891

Gun will not shoot, shows error.

$
0
0
i made a gun script. that shows error: NullReferenceException: Object reference not set to an instance of an object gun.Shoot () (at Assets/code/gun.cs:132)<---- see script 1 (see void Shoot for gun.shoot) PlayerAction.Update () (at Assets/PlayerAction.cs:11)<--- see script 2 script 1: using System.Collections; using UnityEngine.Pool; using UnityEngine; [CreateAssetMenu(fileName = "Gun", menuName = "guns/Gun", order = 4)] public class gun : ScriptableObject { //public ImpactType ImpactType; public GunTypes Type; public string Name; public GameObject ModelPrefab; public Vector3 spawnpoint; public Vector3 spawnrot; public GunTypesScriptibule gunTypesScriptibule; public TrainconfigScriptable trailconfigScriptable; public MonoBehaviour ActiveMono; private GameObject Model; private float LastShootime; public ParticleSystem ShootSystem; private ObjectPool TrailPool; public void Spawn(Transform Parent, MonoBehaviour Activemono) { this.ActiveMono = ActiveMono; LastShootime = 0; TrailPool = new ObjectPool(CreateTrail); Model = Instantiate(ModelPrefab); Model.transform.SetParent(Parent, false); Model.transform.localPosition = spawnpoint; Model.transform.localRotation = Quaternion.Euler(spawnrot); } private IEnumerator PlayTrail(Vector3 startPoint, Vector3 EndPoint, RaycastHit hit) { TrailRenderer instance = TrailPool.Get(); instance.gameObject.SetActive(true); instance.transform.position = startPoint; yield return null; instance.emitting = true; float Distance = Vector3.Distance(startPoint, EndPoint); float remaningDistance = Distance; while(remaningDistance > 0) { instance.transform.position = Vector3.Lerp( startPoint, EndPoint, Mathf.Clamp01(1 - (remaningDistance / Distance)) ); remaningDistance -= trailconfigScriptable.simspeed * Time.deltaTime; yield return null; } instance.transform.position = EndPoint; //if(hit.collider != null) //{ //SurfaceManager.Instance.HandleImpact( //hit.transform.gameObject, //EndPoint, //hit.normal, //ImpactType, //0 //); //} yield return new WaitForSeconds(trailconfigScriptable.Duation); instance.emitting = false; instance.gameObject.SetActive(false); TrailPool.Release(instance); } private TrailRenderer CreateTrail() { GameObject instance = new GameObject("Bullet Trail"); TrailRenderer trail = instance.AddComponent(); trail.colorGradient = trailconfigScriptable.Colour; trail.material = trailconfigScriptable.material; trail.widthCurve = trailconfigScriptable.WidthCurve; trail.time = trailconfigScriptable.Duation; trail.minVertexDistance = trailconfigScriptable.MinVertexDistance; trail.emitting = false; trail.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; return trail; } public void Shoot() { if (Time.time > gunTypesScriptibule.FireRate + LastShootime) { LastShootime = Time.time; ShootSystem.Play(); Vector3 shootDirection = ShootSystem.transform.forward + new Vector3( Random.Range( -gunTypesScriptibule.Spread.x, gunTypesScriptibule.Spread.x ), Random.Range( -gunTypesScriptibule.Spread.y, gunTypesScriptibule.Spread.y ), Random.Range( -gunTypesScriptibule.Spread.z, gunTypesScriptibule.Spread.z ) ); shootDirection.Normalize(); if (Physics.Raycast( ShootSystem.transform.position, shootDirection, out RaycastHit hit, float.MaxValue, gunTypesScriptibule.HitMask )) { ActiveMono.StartCoroutine( PlayTrail( ShootSystem.transform.position, hit.point, hit ) ); } else { ActiveMono.StartCoroutine( PlayTrail( ShootSystem.transform.position, ShootSystem.transform.position + (shootDirection * trailconfigScriptable.missDistance), new RaycastHit() ) ); } } } } script 2: using UnityEngine; public class PlayerAction : MonoBehaviour { public WeponSwitch Gunselect; private void Update() { if (Input.GetButton("Fire1") && Gunselect.Activegun != null) { Gunselect.Activegun.Shoot(); } } }

Viewing all articles
Browse latest Browse all 2891

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>