Hey everyone trying to make a 3d mesh shield that can take damage based on side hit. So detect top, bottom, fore, aft, left, right shield hits and those sides take float damage. Right now its working as a single shield and takes damage. Any ideas?
Current weapon script…
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(LineRenderer))]
public class BeamArray : MonoBehaviour
{
LineRenderer line;
public Material lineMaterial;
bool phaser = false;
public AudioClip sound;
void Start()
{
line = GetComponent<LineRenderer>();
line.SetVertexCount(2);
line.renderer.material = lineMaterial;
line.SetWidth(0.1f, 0.25f);
line.enabled = false;
}
void Update()
{
var script = GameObject.Find("aaMain Camera").GetComponent<SelectTarget>();
if(Input.GetKeyDown("space") && phaser == false && script.gui == "yes")
{
phaser = true;
StartCoroutine (pulsetime());
}
}
IEnumerator pulsetime()
{
var script = GameObject.Find("aaMain Camera").GetComponent<SelectTarget>();
line.enabled = true;
AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);
RaycastHit hit;
if (Physics.Linecast(transform.position, script.selectedTarget.transform.position, out hit))
{
// call ApplyDamage(10) in the hit object:
hit.transform.SendMessage("ApplyDamage", 700, SendMessageOptions.DontRequireReceiver);
}
//wait the cooldown time in a loop
float delay = 1.680f;
while (delay > 0)
{
//update beam endpoints
if(script.Shields == false)
{
line.SetPosition(0, transform.position);
line.SetPosition(1, script.selectedTarget.transform.position);
}
if(script.Shields == true)
{
line.SetPosition(0, transform.position);
line.SetPosition(1, hit.point);
script.selectedTarget.GetComponent<MeshRenderer>().enabled = true;
}
//decrement delay time
delay -= Time.deltaTime;
//let unity free until next frame
yield return null;
}
line.enabled = false;
phaser = false;
script.selectedTarget.GetComponent<MeshRenderer>().enabled = false;
}
}