/// <summary> /// 显示斩击评价 /// </summary> /// <param name="evaluation">斩击评估</param> public void DrawEvaluation(_GameControl.EVALUATION evaluation) { if (evaluation == _GameControl.EVALUATION.GREAT) { evaluationImage.sprite = greatSprite; } else { evaluationImage.sprite = okaySprite; } evaluationImage.color = Color.white; evaluationTimer = evaluationDampTime; }
/// <summary> /// 被击中 /// </summary> /// <param name="evaluation">击飞程度</param> public void OnAttackedFromPlayer(_GameControl.EVALUATION evaluation) { isAlive = false; state = STATE.DEFEATED; GetComponent <BoxCollider>().enabled = false; _PlayerControl playerControl = Player.GetComponent <_PlayerControl>(); runSpeed = playerControl.runSpeed; // 固定编队在屏幕的位置 // 设置击飞速度,以圆锥型状发散发射出去 float groupSpeed = 0.0f; // 整体速度 float groupAngle = 0.0f; // 整体发射角度 float randSpeed = 0.0f; // 散开速度 float randAngle = 0.0f; // 散开角度 if (evaluation == _GameControl.EVALUATION.OKAY) { groupSpeed = 10.0f; groupAngle = 20.0f; randSpeed = 2.0f; } else if (evaluation == _GameControl.EVALUATION.GOOD) { groupSpeed = 10.0f; groupAngle = -20.0f; randSpeed = 3.0f; } else if (evaluation == _GameControl.EVALUATION.GREAT) { groupSpeed = 15.0f; groupAngle = -40.0f; randSpeed = 4.0f; } groupSpeed *= Random.Range(0.8f, 1.2f); for (int i = 0; i < Onis.Length; i++) { Vector3 speed = Vector3.forward * randSpeed; randAngle = Random.Range(0.0f, 360.0f); speed = Quaternion.AngleAxis(randAngle, Vector3.up) * speed; speed += groupSpeed * Vector3.up; speed = Quaternion.AngleAxis(groupAngle, Vector3.forward) * speed; Onis[i].OnAttack(speed); } }
private void OnTriggerStay(Collider other) { if (!isAttacking) { return; } if (other.gameObject.tag == "OniGroup") { _OniGroupControl oniGroup = other.GetComponent <_OniGroupControl>(); if (oniGroup.isAlive) { float attackTime = Player.GetComponent <_PlayerControl>().GetAttackTimer(); // 攻击时机 int count = oniGroup.GetCount(); // 怪物数量 _GameControl.EVALUATION evaluation = gameControl.Scored(count, attackTime); // 评估得分 Player.GetComponent <_PlayerControl>().AttackTheTarget(oniGroup.transform.position); // 角色击中目标 oniGroup.OnAttackedFromPlayer(evaluation); // 怪物被击飞 } } }