- Home /
 
               Question by 
               Sansgamer120 · Nov 20, 2020 at 03:15 PM · 
                3dweaponshotgun  
              
 
              How to make shotgun unity 3d
I made a shotgun that shoots a prefab that is a wide plane that acts as the damager. it is filled with pellets and particles that make it look better. the only problem is that it starts at that size and doesn't expand or work that well. here is the script for the bullet. using System.Collections; using UnityEngine;
public class SC_Bullet : MonoBehaviour { public float bulletSpeed = 345; public float hitForce = 50f; public float destroyAfter = 3.5f;
 float currentTime = 0;
 Vector3 newPos;
 Vector3 oldPos;
 bool hasHit = false;
 float damagePoints;
 // Start is called before the first frame update
 IEnumerator Start()
 {
     newPos = transform.position;
     oldPos = newPos;
     while (currentTime < destroyAfter && !hasHit)
     {
         Vector3 velocity = transform.forward * bulletSpeed;
         newPos += velocity * Time.deltaTime;
         Vector3 direction = newPos - oldPos;
         float distance = direction.magnitude;
         RaycastHit hit;
         // Check if we hit anything on the way
         if (Physics.Raycast(oldPos, direction, out hit, distance))
         {
             if (hit.rigidbody != null)
             {
                 hit.rigidbody.AddForce(direction * hitForce);
                 IEntity npc = hit.transform.GetComponent<IEntity>();
                 if (npc != null)
                 {
                     //Apply damage to NPC
                     npc.ApplyDamage(damagePoints);
                 }
             }
             newPos = hit.point; //Adjust new position
             StartCoroutine(DestroyBullet());
         }
         currentTime += Time.deltaTime;
         yield return new WaitForFixedUpdate();
         transform.position = newPos;
         oldPos = newPos;
     }
     if (!hasHit)
     {
         StartCoroutine(DestroyBullet());
     }
 }
 IEnumerator DestroyBullet()
 {
     hasHit = true;
     yield return new WaitForSeconds(0.5f);
     Destroy(gameObject);
 }
 //Set how much damage this bullet will deal
 public void SetDamage(float points)
 {
     damagePoints = points;
 }
}
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                