// Start is called before the first frame update void Start() { shootRay.origin = transform.position; shootRay.direction = transform.forward; gunLine.SetPosition(0, transform.position); if (Physics.Raycast(shootRay, out shootHit, range, shootableMask)) { //hit an enemy goes here gunLine.SetPosition(1, shootHit.point); // draw line from position of fired all the way to hit point Debug.Log(gameObject.name + " 2DRaycasthit: " + shootHit.collider.name); targetObj = shootHit.collider.gameObject; if (targetObj.tag == "Enemy" || targetObj.tag == "Enemy_2" && targetObj != shooter) { MechCharStatHP targetMechCharStatHP = targetObj.GetComponent <MechCharStatHP>(); if (targetMechCharStatHP) { targetMechCharStatHP.ApplyDamage(1000f); print("Applying dmg: " + damage + " to " + targetObj.name); } } MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(shootHit.collider.transform, transform, pushBackForce); } else { gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); } // shootHit.collider.GetComponent<MechCharStatHP>().ApplyDamage(damage); }
// Start is called before the first frame update void Update() { shootableMask = LayerMask.GetMask("PropCol"); gunLine = GetComponent <LineRenderer>(); shootRay.origin = transform.position; shootRay.direction = transform.forward; gunLine.SetPosition(0, transform.position); if (Physics.Raycast(shootRay, out shootHit, range, shootableMask)) { //hit an enemy goes here gunLine.SetPosition(1, shootHit.point); // draw line from position of fired all the way to hit point Debug.Log(gameObject.name + " 2DRaycasthit: " + shootHit.collider.name); GameObject targetObj = shootHit.collider.gameObject; MechCharStatHP targetMechCharStatHP = targetObj.GetComponent <MechCharStatHP>(); if (targetMechCharStatHP) { targetMechCharStatHP.ApplyDamage(damage); } MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(shootHit.collider.transform, transform, pushBackForce); } else { gunLine.SetPosition(1, shootRay.origin + shootRay.direction * range); } // shootHit.collider.GetComponent<MechCharStatHP>().ApplyDamage(damage); }
public void UseItemAbility() { //sphr cast and attack all objects with PropCol layerMask in it if (nextMelee < Time.time) { nextMelee = Time.time + fireRate; //do damage if (bIs2DGame) // for 2D Games { Collider2D[] target = Physics2D.OverlapCircleAll(transform.position, knockBackRadius, shootableMask); if (bDebugTrace) { DebugExtension.DebugWireSphere(transform.position, Color.red, knockBackRadius); } foreach (Collider2D tCol in target) { MechCharStatHP targetMechCharStatHP = tCol.GetComponent <MechCharStatHP>(); if (targetMechCharStatHP) { targetMechCharStatHP.ApplyDamage(damage); MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(tCol.gameObject.transform, transform, pushBackForce); } } } else // for 3D Games { Collider[] target = Physics.OverlapSphere(transform.position, knockBackRadius, shootableMask); if (bDebugTrace) { DebugExtension.DebugWireSphere(transform.position, Color.red, knockBackRadius); } print(target.Length); foreach (Collider tCol in target) { MechCharStatHP targetMechCharStatHP = tCol.GetComponent <MechCharStatHP>(); if (targetMechCharStatHP) { targetMechCharStatHP.ApplyDamage(damage); MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(tCol.gameObject.transform, transform, pushBackForce); } } } } }
private void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.layer == LayerMask.NameToLayer("PropCol")) { MechCharStatHP mechCharStatHP = other.gameObject.GetComponent <MechCharStatHP>(); if (mechCharStatHP) { mechCharStatHP.ApplyDamage(damage); } myRB.velocity = Vector2.zero; MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(other.transform, transform, pushBackForce); Destroy(gameObject); } }
void Attack(GameObject targetObj) { MechCharStatHP targetMechCharStatHP = targetObj.GetComponent <MechCharStatHP>(); if (targetMechCharStatHP != null) { if (fireRate <= Time.time) { targetMechCharStatHP.ApplyDamage(damage); fireRate = Time.time + damageRate; MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(targetObj.transform, transform, pushBackForce); } } }
// Start is called before the first frame update void Update() { shootableMask = LayerMask.GetMask("PropCol"); gunLine = GetComponent <LineRenderer>(); gunLine.SetPosition(0, transform.position); // invert direction check if (bInvertRaycastDirection) { offsetMultiplier = -Mathf.Abs(offsetMultiplier); // right } else { offsetMultiplier = Mathf.Abs(offsetMultiplier); // right } shootHit = Physics2D.Raycast(transform.position, transform.right * offsetMultiplier, range, shootableMask); if (shootHit.collider != null) { gunLine.SetPosition(1, shootHit.point); Debug.Log(gameObject.name + " 2DRaycasthit: " + shootHit.collider.name); GameObject targetObj = shootHit.collider.gameObject; MechCharStatHP targetMechCharStatHP = targetObj.GetComponent <MechCharStatHP>(); if (targetMechCharStatHP) { targetMechCharStatHP.ApplyDamage(damage); } MechExtraCharSkillPhysicsShortcuts.LaunchObjBy2Transforms(shootHit.collider.transform, transform, pushBackForce); } else { gunLine.SetPosition(1, transform.position + transform.right * range * offsetMultiplier); } }