Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class BeamProjectile : BaseProjectile {
- GameObject m_launcher;
- public float range;
- GameObject m_target;
- int m_damage;
- float m_attackspeed;
- float m_attacktimer;
- // Update is called once per frame
- void Update()
- {
- m_attacktimer += Time.deltaTime;
- if (m_launcher)
- {
- GetComponent<LineRenderer>().SetPosition(0, m_launcher.transform.position);
- GetComponent<LineRenderer>().SetPosition(1, m_launcher.transform.position + (m_launcher.transform.forward * range));
- RaycastHit hit;
- if (Physics.Raycast(m_launcher.transform.position, m_launcher.transform.forward, out hit, range))
- {
- if (hit.transform.gameObject == m_target)
- {
- if (m_attacktimer >= m_attackspeed)
- {
- DamageData dmgData = new DamageData();
- dmgData.damage = m_damage;
- MessageHandler msgHandler = m_target.GetComponent<MessageHandler>();
- if (msgHandler)
- {
- msgHandler.GiveMessage(MessageType.DAMAGED, m_launcher, dmgData);
- }
- m_attacktimer = 0.0f;
- }
- }
- }
- }
- }
- public override void FireProjectile(GameObject launcher, GameObject target, int damage, float attackSpeed)
- {
- if (launcher)
- {
- m_launcher = launcher;
- m_target = target;
- m_damage = damage;
- m_attackspeed = attackSpeed;
- m_attacktimer = 0.0f;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment