void ShoutOut() { if (hit_sphere.activeSelf) { hit_sphere.SetActive(false); InAttackRange(); } if (kinds != ArrowsKind.normal) { box.enabled = false; } controll.islunch = true; temp = Vector3.Distance(leftrain.transform.position, rightrain.transform.position); //Debug.Log(bstatus.ToString() + "<<<<<<<<<<<<"); if (rb != null) { rb.mass = 0.2f; rb.angularDrag = 0; rb.freezeRotation = true; switch (kinds) { case ArrowsKind.normal: if (temp < 0.15f) { rb.AddForce(-bullet.transform.up * 10f); } else { rb.AddForce(-bullet.transform.up * 1000f * (temp - 0.15f)); } controll.endpos = arrowstop; break; case ArrowsKind.torch: case ArrowsKind.ice: rb.AddForce(-bullet.transform.up * 1000f); break; default: break; } } else { Debug.Log("withoutrigidbody"); } status = shootstatus.stay; bstatus = bulletstatus.none; kinds = ArrowsKind.normal; fire_status = firestatus.reday; if (fire != null && bullet != null) { fire.transform.SetParent(bullet.transform); } // Destroy(fire, 1f); isfireon = false; /*重置箭头火焰是否点着*/ }
void Awake() { kinds = ArrowsKind.normal; status = shootstatus.none; bstatus = bulletstatus.none; fire_status = firestatus.reday; mask = LayerMask.GetMask("Floor"); }
/// <summary> /// 检查距离改变状态 /// </summary> /// <param name="me">自身</param> /// <param name="target">目标</param> /// <param name="key">扳机键</param> void Chekdic(Transform me, Transform target, bool key) { temp = Vector3.Distance(me.position, target.position); switch (status) { case shootstatus.none: if (temp < 2f && key) { //Debug.Log("nonenonenone"); timer += Time.deltaTime; if (timer > 3f) { status = shootstatus.stay; target.SetParent(me); target.transform.localPosition = Vector3.zero; target.transform.localRotation = Quaternion.identity; handfirst = me.gameObject; } } break; case shootstatus.stay: CreatArrows(); break; case shootstatus.shoot: ShoutOut(); break; case shootstatus.lose: // ShowRanking(); break; default: break; } }
void GameEnd() { status = shootstatus.lose; }
void CreatArrows() { //调整箭的方向,箭的旋转,发射出去的就不管了 Vector3 tempforward = Vector3.one; if (bullet != null && handfirst == rightrain && !bullet.GetComponent <Bulletcontroll>().islunch) { bullet.transform.up = Vector3.Normalize(leftrain.transform.position - bow.transform.position); tempforward = -bullet.transform.up; // Debug.DrawLine(target.transform.position, leftrain.transform.position, Color.red); // arrows.transform.localEulerAngles = new Vector3(0, leftrain.transform.eulerAngles.y, -90); } else if (bullet != null && handfirst == leftrain && !bullet.GetComponent <Bulletcontroll>().islunch) { bullet.transform.up = Vector3.Normalize(rightrain.transform.position - bow.transform.position); tempforward = -bullet.transform.up; // Debug.DrawLine(target.transform.position, rightrain.transform.position, Color.red); // arrows.transform.localEulerAngles = new Vector3(0, rightrain.transform.eulerAngles.y, -90); } //判断哪只手柄拿着弓 if (handfirst.Equals(leftrain)) { if (bstatus == bulletstatus.none) { Choiseparent(rightrain, msg.Rightkey); } if (msg.Rightkey && bstatus == bulletstatus.ready) { Vector3 tempvec = Vector3.Normalize(leftrain.transform.position - rightrain.transform.position); float limitshaking = Vector3.Distance(leftrain.transform.position, rightrain.transform.position); if (limitshaking > 0.15f) { if (limitshaking * 10 % 2f <= 0.4f) { //Debug.Log("11111111111"); RainsShaking(SteamVR_Controller.DeviceRelation.Rightmost, 3000); RainsShaking(SteamVR_Controller.DeviceRelation.Leftmost, 3000); } } bowstring.transform.position = rightrain.transform.position; AttackRange(tempforward, leftrain); } if (!msg.Rightkey && bstatus == bulletstatus.ready) { bowstring.transform.localPosition = bowsoldpos; bstatus = bulletstatus.lunch; } if (!msg.Rightkey && bstatus == bulletstatus.lunch) { status = shootstatus.shoot; rb.isKinematic = false; bullet.transform.SetParent(null); } } else { if (bstatus == bulletstatus.none) { Choiseparent(leftrain, msg.Leftkey); } if (msg.Leftkey && bstatus == bulletstatus.ready) { float limitshaking = Vector3.Distance(leftrain.transform.position, rightrain.transform.position); // target.transform.LookAt(leftrain.transform.position); if (limitshaking > 0.15f) { //手柄靠近时震动 if (limitshaking < 0.3f) { // RaisShaking(SteamVR_Controller.DeviceRelation.Leftmost, 800); //var deviceIndex2 = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Rightmost); //SteamVR_Controller.Input(deviceIndex2).TriggerHapticPulse(800); } if (limitshaking * 10 % 2f <= 0.4f) { RainsShaking(SteamVR_Controller.DeviceRelation.Rightmost, 3000); RainsShaking(SteamVR_Controller.DeviceRelation.Leftmost, 3000); //var deviceIndex2 = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Rightmost); //SteamVR_Controller.Input(deviceIndex2).TriggerHapticPulse(800); } } bowstring.transform.position = leftrain.transform.position; AttackRange(tempforward, rightrain); } if (!msg.Leftkey && bstatus == bulletstatus.ready) { bowstring.transform.localPosition = bowsoldpos; bstatus = bulletstatus.lunch; } if (!msg.Leftkey && bstatus == bulletstatus.lunch) { status = shootstatus.shoot; rb.isKinematic = false; bullet.transform.SetParent(null); } } }