Upload from upload_mods.ps1
This commit is contained in:
49
KFAttached/FPSPack/Demo/FPSFireManager.cs
Normal file
49
KFAttached/FPSPack/Demo/FPSFireManager.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class FPSFireManager : MonoBehaviour
|
||||
{
|
||||
public ImpactInfo[] ImpactElemets = new ImpactInfo[0];
|
||||
public float BulletDistance = 100;
|
||||
public GameObject ImpactEffect;
|
||||
|
||||
void Update()
|
||||
{
|
||||
if (Input.GetMouseButtonDown(0))
|
||||
{
|
||||
RaycastHit hit;
|
||||
var ray = new Ray(transform.position, transform.forward);
|
||||
if (Physics.Raycast(ray, out hit, BulletDistance))
|
||||
{
|
||||
var effect = GetImpactEffect(hit.transform.gameObject);
|
||||
if (effect == null)
|
||||
return;
|
||||
var effectIstance = Instantiate(effect, hit.point, new Quaternion()) as GameObject;
|
||||
ImpactEffect.SetActive(false);
|
||||
ImpactEffect.SetActive(true);
|
||||
effectIstance.transform.LookAt(hit.point + hit.normal);
|
||||
Destroy(effectIstance, 4);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class ImpactInfo
|
||||
{
|
||||
public MaterialType.MaterialTypeEnum MaterialType;
|
||||
public GameObject ImpactEffect;
|
||||
}
|
||||
|
||||
GameObject GetImpactEffect(GameObject impactedGameObject)
|
||||
{
|
||||
var materialType = impactedGameObject.GetComponent<MaterialType>();
|
||||
if (materialType == null)
|
||||
return null;
|
||||
foreach (var impactInfo in ImpactElemets)
|
||||
{
|
||||
if (impactInfo.MaterialType == materialType.TypeOfMaterial)
|
||||
return impactInfo.ImpactEffect;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user