void Start() { ProjectileManager projectilManager = GameObject.Find("Game").GetComponent <ProjectileManager>() as ProjectileManager; //Create the eyepool and fill it with eyes m_EyePool = new GameObject(); m_EyePool.transform.SetParent(beast.transform); m_EyePool.name = "Eye Pool"; m_LogicalEyes = new GameObject(); m_LogicalEyes.transform.SetParent(this.transform); m_LogicalEyes.name = "Logical Eye Pool"; for (int i = 0; i < m_numberOfPlayers * 2; i++) { //Vector3 position = m_Positions[i]; Vector3 position = RandomEyePosition();// new Vector3(Random.Range(-3, 3), Random.Range(0.5f, 2), 0); GameObject eye = Instantiate(m_EyePrefab, position, transform.rotation) as GameObject; eye.transform.parent = m_EyePool.transform; eye.GetComponent <EnragedAttackPattern>().m_projectileManager = projectilManager; eye.GetComponent <Eye>().beast = this.beast; eye.name = "Eye" + i; } //Create the logical eyes, then will grab eye's from the eye pool as needed for (int i = 0; i < m_numberOfPlayers * 2; i++) { GameObject logicalEyeObject = Instantiate(m_LogicalEyePrefab, Vector3.zero, transform.rotation) as GameObject; LogicalEye logicalEye = logicalEyeObject.GetComponent <LogicalEye>(); logicalEye.SetPlayer(i / 2, i % 2); logicalEye.transform.SetParent(m_LogicalEyes.transform); logicalEye.m_PlayerManager = this; logicalEye.name = "LogicalEye" + i; logicalEye.m_Colour = m_Colors[i / 2]; } m_PlayerGlyphs = new GameObject[m_numberOfPlayers]; for (int i = 0; i < m_numberOfPlayers; i++) { m_PlayerGlyphs[i] = Instantiate(m_GlyphPrefab, Vector3.zero, transform.rotation) as GameObject; m_PlayerGlyphs[i].SetActive(false); } laserSound = GetComponents <AudioSource>()[1]; laserSoundMaxVolume = laserSound.volume; laserSound.volume = 0; laserSound.Play(); }
void FindEyePair(int playerNum, out LogicalEye a, out LogicalEye b) { a = null; b = null; for (int i = 0; i < m_LogicalEyes.transform.childCount; i++) { LogicalEye logicalA = m_LogicalEyes.transform.GetChild(i).GetComponent <LogicalEye>(); if (logicalA.m_PlayerNum == playerNum && logicalA.m_HandNum == 0) { a = logicalA; } if (logicalA.m_PlayerNum == playerNum && logicalA.m_HandNum == 1) { b = logicalA; } } }
// Update is called once per frame void Update() { if (this.beast.isDead == true) { this.playerDead = true; laserSound.Stop(); } List <float> laserIntensities = new List <float>(); //Check that the left/rightness of eye pairs match the world left/rightness for (int i = 0; i < m_LogicalEyes.transform.childCount; i++) { LogicalEye logicalA = m_LogicalEyes.transform.GetChild(i).GetComponent <LogicalEye>(); if (logicalA.m_TargetEye) { Eye eyeA = logicalA.m_TargetEye.GetComponent <Eye>(); laserIntensities.Add(eyeA.m_LaserIntensity); for (int j = i; j < m_LogicalEyes.transform.childCount; j++) { LogicalEye logicalB = m_LogicalEyes.transform.GetChild(j).GetComponent <LogicalEye>(); if (logicalB.m_TargetEye) { Eye eyeB = logicalB.m_TargetEye.GetComponent <Eye>(); laserIntensities.Add(eyeB.m_LaserIntensity); if (logicalA.m_PlayerNum == logicalB.m_PlayerNum) { if (eyeA.transform.position.x < eyeB.transform.position.x) { logicalA.SetHand(0); logicalB.SetHand(1); } else if (eyeA.transform.position.x > eyeB.transform.position.x) { logicalA.SetHand(1); logicalB.SetHand(0); } } } } } } /* * //Search for eye pairs * { * for (int i = 0; i < m_numberOfPlayers; i++) * { * LogicalEye logicalA; * LogicalEye logicalB; * * FindEyePair(0, out logicalA, out logicalB); * if (logicalA && logicalA.m_TargetEye && logicalB && logicalB.m_TargetEye) * { * Vector2 startA = logicalA.m_TargetEye.m_Laser.transform.position; * Vector2 endA = startA + logicalA.m_TargetEye.m_LookDirection * 25.0f; ; * Vector2 startB = logicalB.m_TargetEye.m_Laser.transform.position; * Vector2 endB = startB + logicalB.m_TargetEye.m_LookDirection * 25.0f; * * Debug.Log(logicalA.m_TargetEye.m_LookDirection); * * Vector2 intersection = new Vector2(); * if (LineIntersection(startA, endA, startB, endB, out intersection)) * { * m_PlayerGlyphs[i].transform.position = intersection; * m_PlayerGlyphs[i].SetActive(true); * } * else * { * m_PlayerGlyphs[i].SetActive(false); * } * } * } * }*/ laserSound.volume = Mathf.SmoothStep(0, laserSoundMaxVolume, Mathf.Max(laserIntensities.ToArray()) / 1.0f); }