// Update is called once per frame void Update() { //DEV - REMOVE WHEN CODE IS IN TO ADD MESSAGES if (Input.GetKeyDown(KeyCode.Space)) { AddCannister(Alert.possibleAlertSituations[0].answers[0]); } int canNum = visibleCannisterList.Count; for (int i = 0; i < canNum; i++) { Cannister can = visibleCannisterList[i]; if (can.ejected) { for (int j = canNum - 1; j > i; j--) { visibleCannisterList[j].GoDown(animOffset); } cannon.FireCannon(can.message); visibleCannisterList.Remove(can); AddCannister(new AlertAnswer(can.message.text, SITUATION_ENDING.EXPLOSION, new AlertResponseToAnswer())); break; } else if (can.outOfRange) { visibleCannisterList.Remove(can); AddCannister(new AlertAnswer(can.message.text, SITUATION_ENDING.EXPLOSION, new AlertResponseToAnswer())); can.Kill(); break; } } }
private float animOffset = 0.05f; //value in animation "time" in between two cans = distance between cans public void AddCannister(AlertAnswer message) { Cannister newCan = Instantiate(cannisterPrefab, this.transform, true); float canPosition = 0.6f; if (visibleCannisterList.Count > 0) { Cannister previousCan = visibleCannisterList[visibleCannisterList.Count - 1]; float slidePos = previousCan.slidePos - animOffset; if (previousCan.goingDown > 0) { slidePos = previousCan.goingDownStart + animOffset * previousCan.goingDown - animOffset; } canPosition = Mathf.Min(0.6f - animOffset, slidePos); } newCan.Initialize(message, canPosition); visibleCannisterList.Add(newCan); }