33 lines
		
	
	
		
			779 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			779 B
		
	
	
	
		
			C#
		
	
	
	
	
	
| using UnityEngine;
 | |
| 
 | |
| public class Target : MonoBehaviour, IArrowHittable
 | |
| {
 | |
|     public float forceAmount = 1.0f;
 | |
|     public Material otherMaterial = null;
 | |
| 
 | |
|     public void Hit(Arrow arrow)
 | |
|     {
 | |
|         ApplyMaterial();
 | |
|         ApplyForce(arrow);
 | |
|         DisableCollider(arrow);
 | |
|     }
 | |
| 
 | |
|     private void ApplyMaterial()
 | |
|     {
 | |
|         if (TryGetComponent(out MeshRenderer meshRenderer))
 | |
|             meshRenderer.material = otherMaterial;
 | |
|     }
 | |
| 
 | |
|     private void ApplyForce(Arrow arrow)
 | |
|     {
 | |
|         if (TryGetComponent(out Rigidbody rigidbody))
 | |
|             rigidbody.AddForce(arrow.transform.forward * forceAmount);
 | |
|     }
 | |
| 
 | |
|     private void DisableCollider(Arrow arrow)
 | |
|     {
 | |
|         if (arrow.TryGetComponent(out Collider collider))
 | |
|             collider.enabled = false;
 | |
|     }
 | |
| }
 |