internal void ReduceLadderCount(HumanScript human) { //Application.CaptureScreenshot("Screenshot.png"); missSound.Play(); ladderCount--; countText.text = ladderCount.ToString(); humans.Remove(human); prepareHumans.Add(human); }
// Update is called once per frame void Update() { if (!playingOn) { return; } switch (status) { case 0: waitShift -= Time.deltaTime; if (waitShift < 0) { nextHuman = GetHuman(); nextHuman.ReStart(fallPoint); status = 2; } break; case 1: status++; break; case 2: // 准备获取触摸或点击 if (Input.GetButtonDown("Fire1")) { touchSound.Play(); status++; } break; case 3: // 持续触摸或点击 调整位置 //Debug.Log("Input.GetButton(\"Fire1\") = " + Input.GetButton("Fire1")); if (Input.GetButton("Fire1")) { nextHuman.Position = new Vector3(Camera.main.ScreenPointToRay(Input.mousePosition).origin.x, 0, 0); } else { fallSound.Play(); nextHuman.Fall(); status++; } break; case 4: // 松手 放开 准备下一个human waitShift = waitTime; status = 0; break; } }
HumanScript GetHuman() { HumanScript human = null; if (prepareHumans.Count > 0) { human = prepareHumans[0]; prepareHumans.RemoveAt(0); } else { human = (Instantiate(humanPrefab) as GameObject).GetComponent <HumanScript>(); human.humanLadderController = this; Rigidbody2D rigidbody2D = human.GetComponent <Rigidbody2D>(); rigidbody2D.centerOfMass = new Vector2(0, 0.01f); } return(human); }
// Start is called before the first frame update void Start() { if (instance == null) { instance = this; } else { Destroy(this); } zombies = new List <ZombieScript>(); humans = new List <HumanScript>(); obstacles = new List <Obstacle>(); //creates obstacles at random positions for (int i = 0; i < numObstacles; i++) { obstacleTemp = Instantiate(obstaclePrefab); obstacleTemp.transform.position = new Vector3(Random.Range(-floorWidth, floorWidth), 3, Random.Range(-floorHeight, floorHeight)); obstacles.Add(obstacleTemp); } //cerates humans at random positions for (int i = 0; i < numHumans; i++) { humanTemp = Instantiate(humanPrefab); humanTemp.transform.position = new Vector3(Random.Range(-floorWidth, floorWidth), 1, Random.Range(-floorHeight, floorHeight)); humans.Add(humanTemp); } //creates zombies at random positions for (int i = 0; i < numZombies; i++) { zombieTemp = Instantiate(zombiePrefab); zombieTemp.transform.position = new Vector3(Random.Range(-floorWidth, floorWidth), 1, Random.Range(-floorHeight, floorHeight)); zombies.Add(zombieTemp); } }
// Update is called once per frame void Update() { temp = 50; for (int i = 0; i < humanScripts.Count; i++) { for (int j = 0; j < zombieScripts.Count; j++) { if (Vector3.Distance(humanScripts[i].transform.position, zombieScripts[j].transform.position) < temp) { temp = Vector3.Distance(humanScripts[i].transform.position, zombieScripts[j].transform.position); zombieScripts[j].seekTarget = humans[i]; } if (Vector3.Distance(humanScripts[i].transform.position, zombieScripts[j].transform.position) < 5) { newZ = true; GameObject tempHuman = humans[i]; HumanScript tempScript = humanScripts[i]; Vehicle tempVehicle = humans[i].GetComponent <Vehicle>(); humans.Remove(tempHuman); humanScripts.Remove(tempScript); GameObject newZombie = Instantiate(zPrefab, tempHuman.transform.position, Quaternion.identity); ZombieScript newZScript = newZombie.GetComponent <ZombieScript>(); newZScript.seekTarget = humans[i]; newZScript.maxSpeed = 10; newZScript.seekWeight = 1; tempVehicle.maxSpeed = 10; zombie.Add(newZombie); zombieScripts.Add(newZScript); tempHuman.SetActive(false); break; } Vehicle check = humanScripts[i].GetComponent <Vehicle>(); if (Vector3.Distance(humanScripts[i].transform.position, zombieScripts[j].transform.position) < 15) { check.mass = 0.25f; steer = check.Evade(zombieScripts[j].transform.position, zombieScripts[j].transform.position + this.transform.position); steer.y = 0; check.ApplyForce(steer); } else { Wander(check); } if (humanScripts[i].transform.position.x > 50 || humanScripts[i].transform.position.x < -50 || humanScripts[i].transform.position.z < -50 || humanScripts[i].transform.position.z > 50) { steer = check.Seek(new Vector3(0, 0.5f, 0)); steer.y = 0; check.ApplyForce(steer); } } if (newZ) { newZ = false; break; } } if (Input.GetMouseButtonDown(0)) { Vehicle tempVehicle = humans[0].GetComponent <Vehicle>(); GameObject newZombie = Instantiate(zPrefab, Vector3.zero, Quaternion.identity); ZombieScript newZScript = newZombie.GetComponent <ZombieScript>(); newZScript.seekTarget = humans[0]; newZScript.maxSpeed = 10; newZScript.seekWeight = 1; tempVehicle.maxSpeed = 10; zombie.Add(newZombie); zombieScripts.Add(newZScript); } if (humans.Count == 0) { for (int i = 0; i < zombieScripts.Count; i++) { Vehicle check = zombieScripts[i].GetComponent <Vehicle>(); Wander(check); if (zombieScripts[i].transform.position.x > 50 || zombieScripts[i].transform.position.x < -50 || zombieScripts[i].transform.position.z < -50 || zombieScripts[i].transform.position.z > 50) { steer = check.Seek(new Vector3(0, 0.5f, 0)); steer.y = 0; check.ApplyForce(steer); } } } foreach (Vehicle v in all) { for (int i = 0; i < blocks.Length; i++) { Vector3 avoidForce = v.AvoidObstacle(blocks[i], 4.5f); avoidForce.y = 0; v.ApplyForce(avoidForce); } } if (Input.GetKeyDown(KeyCode.F)) { toggle = false; } if (Input.GetKeyDown(KeyCode.D)) { toggle = true; } }
internal void AddLadderCount(HumanScript human) { ladderCount++; countText.text = ladderCount.ToString(); humans.Add(human); }