IEnumerator Vibrate(float factor) { int i = (int)(factor * 10); while (i-- > 0) { transform.position = factor / 2 * (RD.NextPositionf(1, 1, 1) - new Vector3(0.5f, 0.5f, 0.5f)) + transform.position; yield return(new WaitForSeconds(0.01f)); } }
private IEnumerator DoExplode() { // 震动一波摄像头 mainCameraCMP.DoVibrate(transform.position); // 伤敌80,自损15 health.DoAttack(15); // 爆炸部分 int totalExplotions = 5; while (totalExplotions-- > 0) { Vector2 varing = RD.NextPositionf(1, 1); Vector3 pos = transform.position + new Vector3(varing.x - 0.5f, -transform.localScale.y / 2 + 0.2f, varing.y - 0.5f); Instantiate(explotionPrefab, pos, Quaternion.identity); yield return(new WaitForSeconds(0.1f)); } }
IEnumerator DiedAnim() { GameObject.Find("CamPos").GetComponent <CameraController>().DoVibrate(transform.position); // do dieing ~~ int num = 10; while (num-- > 0) { GameObject instance = Instantiate(explotionPrefab, this.transform); Vector3 deltaPos = RD.NextPositionf(1, 1, 1) - Vector3.one * 0.5f; instance.transform.position = instance.transform.position + deltaPos; yield return(new WaitForSeconds(0.2f)); } yield return(new WaitForSeconds(1)); // spawn Giant GameObject giant = Instantiate(giantPrefab, new Vector3(transform.position.x, 5, transform.position.z), Quaternion.identity); yield return(new WaitForSeconds(6)); Destroy(transform.parent.gameObject); }