protected override void OnTriggerEnter(Collider col) { if (col.gameObject.layer == (int)ObjectLayer.Enemy || col.gameObject.layer == (int)ObjectLayer.SpecialEnemy) { if (!enemyList.Contains(col.gameObject)) //攻击存在性判断 { enemyList.Add(col.gameObject); RealAttack = BasicAttack * AttackFactor; //传参给enemy告知受伤 TransformForward = PlayerMedi.PlayerMono.transform.forward; EnemyHurtAttribute.ModifyAttr((int)RealAttack, VelocityForward, VelocityVertical, TransformForward); EnemyReturn = col.GetComponent <IEnemyMono>().Hurt(EnemyHurtAttribute); //特效 InstantiateEffect(); } } } // end_function
public override void Attack() { // 子弹数计算 if (CurrentBulletCount <= 0) { Reload(); return; } --CurrentBulletCount; GameMainProgram.Instance.eventMgr.InvokeEvent(EventName.BulletCount); // 特效 muzzleFlashEffect.SetActive(true); resourcesMgr.LoadAsset(shootEffect, true, bulletPosition.position, Quaternion.identity); // 子弹壳 Vector3 randomEmptyShellForce = new Vector3(Random.Range(emptyShellMinForce.x, emptyShellMaxForce.x), Random.Range(emptyShellMinForce.y, emptyShellMaxForce.y), Random.Range(emptyShellMinForce.z, emptyShellMaxForce.z)); GameObject emptyShell = resourcesMgr.LoadAsset(shellEffect, true, shellPosition.position, shellPosition.rotation); emptyShell.GetComponent <Rigidbody>().AddForce(shellPosition.rotation * randomEmptyShellForce, ForceMode.Impulse); // 碰撞检测 Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0)); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { if (hit.transform.gameObject.layer == (int)ObjectLayer.Enemy) { RealAttack = BasicAttack * AttackFactor; // 传参给enemy告知受伤 TransformForward = PlayerMedi.PlayerMono.transform.forward; EnemyHurtAttribute.ModifyAttr((int)RealAttack, VelocityForward, VelocityVertical, TransformForward); EnemyReturn = hit.transform.GetComponent <IEnemyMono>().Hurt(EnemyHurtAttribute); // 特效 resourcesMgr.LoadAsset(bloodEffect, true, hit.point + (hit.normal * .04f), Quaternion.LookRotation(hit.normal)); } else // 打在物体上 { resourcesMgr.LoadAsset(holeEffect, true, hit.point + (hit.normal * .04f), Quaternion.LookRotation(hit.normal) * Quaternion.Euler(new Vector3(0, 0, Random.Range(0, 360)))); resourcesMgr.LoadAsset(hitEffect, true, hit.point + (hit.normal * .07f), Quaternion.LookRotation(hit.normal) * Quaternion.Euler(new Vector3(0, 0, Random.Range(0, 360)))); } } } // end_function
protected override void OnTriggerEnter(Collider col) { // 自行开关Trigger if (Rgbd.velocity.magnitude < 1) { Debug.Log("Trigger off"); trigger.enabled = false; return; } if (col.gameObject.layer == (int)ObjectLayer.Enemy) { if (!enemyList.Contains(col.gameObject))//攻击存在性判断 { enemyList.Add(col.gameObject); RealAttack = BasicAttack * AttackFactor; //传参给enemy告知受伤 EnemyHurtAttribute.ModifyAttr((int)RealAttack, VelocityForward, VelocityVertical, TransformForward); EnemyReturn = col.GetComponent <IEnemyMono>().Hurt(EnemyHurtAttribute); //特效 InstantiateEffect(); } } } // end_function