protected virtual void MoveProjectile() { Ray ray = new Ray(myRigidbody.position, myVelocity); //Try to damage something RaycastHit hit; if (Physics.Raycast(ray, out hit, (myVelocity.magnitude * Time.fixedDeltaTime), hitMask)) { iDamagable target = hit.collider.GetComponentInParent <iDamagable>(); if (target != null) { //Deal damage and spawn an effect if one is assigned target.Damage(damage, hit); } if (hitEffect) { Instantiate(hitEffect, hit.point, Quaternion.LookRotation(hit.normal)); } Destroy(this.gameObject); } //Move if we don't collide with anything else { myRigidbody.MovePosition(myRigidbody.position + (myVelocity * Time.fixedDeltaTime)); } }
void OnHitObject(Collider c, Vector3 hitPoint) { iDamagable damagableObject = c.GetComponent <iDamagable> (); if (damagableObject != null) { damagableObject.TakeHit(damage, hitPoint, transform.forward); Debug.Log("dealt" + damage); } GameObject.Destroy(gameObject); }
protected virtual void attack(iDamagable _target, int _dmg) { _target.TakeDamage(_dmg); }