void createNewEnemy(int i, string type, float speed) { Random.seed = (int)System.DateTime.Now.Ticks; int param = Random.Range(0, 6); Vector3[] x = new Vector3[4]; x[0] = new Vector3(9.9f, CurveMotion.getY(9.9f, type, param), 10); x[1] = new Vector3(-9.9f, CurveMotion.getY(-9.9f, type, param), 10); x[2] = new Vector3(CurveMotion.getX(9.9f, type, param), 9.9f, 10); x[3] = new Vector3(CurveMotion.getX(-9.9f, type, param), -9.9f, 10); for (int j = 0; j < x.Length; j++) { if ((!float.IsNaN(x[j].y)) && (!float.IsNaN(x[j].x)) && Mathf.Abs(x[j].y) <= 11 && Mathf.Abs(x[j].x) <= 11) { enemies[i] = (GameObject)Instantiate(Resources.Load("Enemy")); enemies[i].transform.position = x[j]; CurveMotion mEnemy = (CurveMotion)enemies[i].GetComponent(typeof(CurveMotion)); mEnemy.functionType = type; mEnemy.functionIndex = param; mEnemy.moveDirection = x[j].x > 0?-1:1; mEnemy.moveSpeed = speed; SetProjectileColor(mEnemy); return; } } }
void Start() { NPCAnimator = GetComponent <Animator>(); SelenitState = NPCState.Work; selenit1 = new CurveMotion(this.gameObject, wayPoints); selenit1.MoveSetup(speed, forward: true, cycled: true); selenit1.RotateToPoint(workPoint); currentTime = Time.time; playerObjects = GameObject.Find("Player").GetComponent <PlayerObjects>(); playerEquipment = GameObject.Find("Player").GetComponent <PlayerEquipment>(); npcSFX = GetComponent <AudioSource>(); }
private void OnTriggerEnter(Collider other) { if (other.CompareTag("Player") && !questCompleted) { if (SelenitState == NPCState.Panic) { return; } //Panic Test if (iSelenit) //for Selenit NPC { if (playerObjects.Scafandr && !playerEquipment.IsSelenit) { //Panic Action Transform[] panicPoints = new Transform[] { this.gameObject.transform, panicPoint }; panicWay = new CurveMotion(this.gameObject, panicPoints); panicWay.MoveSetup(speed * 2, forward: true, cycled: false); SelenitState = NPCState.Panic; NPCAnimator.SetBool("Walk", false); NPCAnimator.SetBool(workAnim, false); NPCAnimator.SetBool(panicAnim, true); return; } } else //for Astronaut NPC { if (playerEquipment.IsSelenit || (!playerEquipment.IsSelenit && playerObjects.Scafandr && !playerObjects.Helmet) || (!playerEquipment.IsSelenit && !playerObjects.Scafandr && playerObjects.Helmet)) { //Panic action Transform[] panicPoints = new Transform[] { this.gameObject.transform, panicPoint }; panicWay = new CurveMotion(this.gameObject, panicPoints); panicWay.MoveSetup(speed * 2, forward: true, cycled: false); SelenitState = NPCState.Panic; NPCAnimator.SetBool("Walk", false); NPCAnimator.SetBool(workAnim, false); NPCAnimator.SetBool(panicAnim, true); return; } } dialog = Instantiate(dialogPr); dialog.SetSentences(sentences); SelenitState = NPCState.Talk; NPCAnimator.SetBool("Walk", false); NPCAnimator.SetBool(workAnim, false); } }
void createProjectile(Vector3 pos, int direction, string type) { GameObject p1 = (GameObject)Instantiate(Resources.Load(type)); p1.transform.position = pos; CurveMotion mP1 = (CurveMotion)p1.GetComponent(typeof(CurveMotion)); mP1.functionType = currentFunction; mP1.functionIndex = currentInputLevel; mP1.moveDirection = direction; GameObject obj = GameObject.Find("Main Camera"); if (type == "Projectile") { obj.SendMessage("SetProjectileColor", mP1); } }
void showTarget() { Vector3[] x = new Vector3[4]; x[0] = new Vector3(9.9f, CurveMotion.getY(9.9f, currentFunction, currentInputLevel), 4); x[1] = new Vector3(-9.9f, CurveMotion.getY(-9.9f, currentFunction, currentInputLevel), 4); x[2] = new Vector3(CurveMotion.getX(9.9f, currentFunction, currentInputLevel), 9.9f, 4); x[3] = new Vector3(CurveMotion.getX(-9.9f, currentFunction, currentInputLevel), -9.9f, 4); int textureIndex = 0; switch (currentFunction) { case "linear": textureIndex = 0; break; case "quadratic": textureIndex = 1; break; case "exponential": textureIndex = 2; break; case "sinusoidal": textureIndex = 3; break; } for (int i = 0; i < x.Length; i++) { GameObject capsule = GameObject.Find("t" + i); if ((!float.IsNaN(x[i].y)) && (!float.IsNaN(x[i].x)) && Mathf.Abs(x[i].y) <= 11 && Mathf.Abs(x[i].x) <= 11) { capsule.transform.position = x[i]; capsule.renderer.enabled = true; capsule.renderer.material.mainTexture = targetTexture[textureIndex]; } else { capsule.renderer.enabled = false; } } if (currentFunction == "quadratic") { if ((!float.IsNaN(x[2].y)) && (!float.IsNaN(x[2].x)) && Mathf.Abs(x[2].y) <= 11 && Mathf.Abs(x[2].x) <= 11) { GameObject capsule = GameObject.Find("t" + 3); capsule.transform.position = new Vector3(-x[2].x, x[2].y, x[2].z); capsule.renderer.enabled = true; capsule.renderer.material.mainTexture = targetTexture[textureIndex]; } else { GameObject capsule = GameObject.Find("t" + 2); capsule.transform.position = new Vector3(-x[3].x, x[3].y, x[3].z); capsule.renderer.enabled = true; capsule.renderer.material.mainTexture = targetTexture[textureIndex]; } } }
void SetProjectileColor(CurveMotion proj) { Renderer projRend; TrailRenderer trailRend; Color theColor = Color.black; Material theMaterial = enemyMaterials[0]; switch (proj.functionType) { case "linear": theColor = new Color(0.00f, 0.80f, 0.00f, 1.00f); if (proj.transform.position.x > 0) { theMaterial = enemyMaterials[0]; } else { theMaterial = enemyMaterials[4]; } // if (proj.transform.position.x < 0) { // scale = proj.transform.localScale; // scale.x = -scale.x; // proj.transform.localScale = scale; // } break; case "quadratic": theColor = new Color(0.00f, 0.00f, 0.90f, 1.00f); if (proj.transform.position.x > 0) { theMaterial = enemyMaterials[1]; } else { theMaterial = enemyMaterials[5]; } break; /*case "hyperbolic": * functionParameter = start.x * start.y; * break;*/ case "exponential": theColor = new Color(0.90f, 0.00f, 0.00f, 1.00f); if (proj.transform.position.x > 0) { theMaterial = enemyMaterials[2]; } else { theMaterial = enemyMaterials[6]; } break; case "sinusoidal": theColor = new Color(0.90f, 0.00f, 0.90f, 1.00f); if (proj.transform.position.x > 0) { theMaterial = enemyMaterials[3]; } else { theMaterial = enemyMaterials[7]; } break; } projRend = (Renderer)proj.GetComponent("Renderer"); projRend.material = theMaterial; trailRend = (TrailRenderer)proj.GetComponent("TrailRenderer"); trailRend.material.SetColor("_Color", theColor); }