You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
| 
								 
											1 year ago
										 
									 | 
							
								using System.Collections;
							 | 
						||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						||
| 
								 | 
							
								using UnityEngine;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Autohand.Demo{
							 | 
						||
| 
								 | 
							
								    public class Pistol : MonoBehaviour
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        public Rigidbody body;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public Transform barrelTip;
							 | 
						||
| 
								 | 
							
								        public float hitPower = 1;
							 | 
						||
| 
								 | 
							
								        public float recoilPower = 1;
							 | 
						||
| 
								 | 
							
								        public float range = 100;
							 | 
						||
| 
								 | 
							
								        public LayerMask layer;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public AudioClip shootSound;
							 | 
						||
| 
								 | 
							
								        public float shootVolume = 1f;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        private void Start() {
							 | 
						||
| 
								 | 
							
								            if(body == null && GetComponent<Rigidbody>() != null)
							 | 
						||
| 
								 | 
							
								                body = GetComponent<Rigidbody>();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public void Shoot() {
							 | 
						||
| 
								 | 
							
								            //Play the audio sound
							 | 
						||
| 
								 | 
							
								            if(shootSound)
							 | 
						||
| 
								 | 
							
								                AudioSource.PlayClipAtPoint(shootSound, transform.position, shootVolume);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            RaycastHit hit;
							 | 
						||
| 
								 | 
							
								            if(Physics.Raycast(barrelTip.position, barrelTip.forward, out hit, range, layer)){
							 | 
						||
| 
								 | 
							
								                var hitBody = hit.transform.GetComponent<Rigidbody>();
							 | 
						||
| 
								 | 
							
								                if(hitBody != null) {
							 | 
						||
| 
								 | 
							
								                    Debug.DrawRay(barrelTip.position, (hit.point - barrelTip.position), Color.green, 5);
							 | 
						||
| 
								 | 
							
								                    hitBody.GetComponent<Smash>()?.DoSmash();
							 | 
						||
| 
								 | 
							
								                    hitBody.AddForceAtPosition((hit.point - barrelTip.position).normalized*hitPower*10, hit.point, ForceMode.Impulse);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            else
							 | 
						||
| 
								 | 
							
								                Debug.DrawRay(barrelTip.position, barrelTip.forward*range, Color.red, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            body.AddForce(barrelTip.transform.up*recoilPower*5, ForceMode.Impulse);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |