void InitMoveBullet(NpcSimpleBullet bulletScript) { //Debug.Log("********InitMoveBullet"); Rigidbody rigObj = bulletScript.GetComponent <Rigidbody>(); Transform TranCam = Camera.main.transform; Vector3 vecDir = Vector3.Lerp(TranCam.forward, Vector3.up, 0.2f); rigObj.AddForce(vecDir * 10f, ForceMode.Impulse); }
void OnMouseFireActive() { //Debug.Log("OnMouseFireActive**********"); // if(NpcSimpleBulletObj == null) // { // return; // } NpcSimpleBullet bulletScript = NpcSimpleBulletObj.GetComponent <NpcSimpleBullet>(); if (bulletScript == null) { if (AnimatorNpc.GetBool("IsFire_1")) { /*if (AudioNpcFire_1 != null) { * AudioListCtrl.PlayAudio( AudioNpcFire_1 ); * }*/ PlayNpcAudio(AudioNpcFireObj_1); } else { /*if (AudioNpcFire_2 != null) { * AudioListCtrl.PlayAudio( AudioNpcFire_2 ); * }*/ PlayNpcAudio(AudioNpcFireObj_2); } } else { switch (bulletScript.BulletState) { case NpcBulletState.BoLiPing: case NpcBulletState.ShuiLei: break; default: if (AnimatorNpc.GetBool("IsFire_1")) { /*if (AudioNpcFire_1 != null) { * AudioListCtrl.PlayAudio( AudioNpcFire_1 ); * }*/ PlayNpcAudio(AudioNpcFireObj_1); } else { /*if (AudioNpcFire_2 != null) { * AudioListCtrl.PlayAudio( AudioNpcFire_2 ); * }*/ PlayNpcAudio(AudioNpcFireObj_2); } break; } } if (IsTeShuZiDanHaiDao) { GameObject haiDanQiangHuo = (GameObject)Instantiate(NpcSimpleBulletObj, SpawnBulletTran.position, SpawnBulletTran.rotation); Transform qiangHuoTran = haiDanQiangHuo.transform; qiangHuoTran.parent = GameCtrlXK.MissionCleanup; /*NpcSimpleBulletObj.SetActive(false); * if (!IsInvoking("DelayActiveNpcSimpleBulletObj")) { * Invoke("DelayActiveNpcSimpleBulletObj", 0.1f); * }*/ return; } Vector3 vecA = Camera.main.transform.position - ZaiTiNpcTran.position; Vector3 vecB = Camera.main.transform.forward; vecA.y = vecB.y = 0f; if (Vector3.Dot(vecA, vecB) > 0f) { return; } Vector3 startPos = SpawnBulletTran.position; Vector3 endPos = Camera.main.transform.position; vecA = ZaiTiNpcTran.position - WaterwheelPlayer.position; vecA.y = vecB.y = 0f; if (Random.Range(0, 100) > 50 || Vector3.Dot(vecA, vecB) < 0.866f) { endPos = WaterwheelPlayer.position + Vector3.up * 1.5f; } float distance = Vector3.Distance(startPos, endPos); Vector3 forwardVec = endPos - startPos; forwardVec = forwardVec.normalized; RaycastHit hitInfo; Physics.Raycast(startPos, forwardVec, out hitInfo, distance, GameCtrlXK.GetInstance().NpcAmmoHitLayer.value); if (hitInfo.collider != null) { endPos = hitInfo.point; } GameObject ammo = (GameObject)Instantiate(NpcSimpleBulletObj); Transform ammoTran = ammo.transform; ammoTran.parent = GameCtrlXK.MissionCleanup; ammoTran.position = startPos; ammoTran.forward = forwardVec; bulletScript = ammo.GetComponent <NpcSimpleBullet>(); if (bulletScript == null) { bulletScript.gameObject.name = "null"; return; } switch (bulletScript.BulletState) { case NpcBulletState.BoLiPing: case NpcBulletState.ShuiLei: InitMoveBullet(bulletScript); CloseFireAction(); break; } bulletScript.dist = Vector3.Distance(startPos, endPos); }