Esempio n. 1
0
    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;
            }
        }
    }
Esempio n. 2
0
 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>();
 }
Esempio n. 3
0
    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];
            }
        }
    }
Esempio n. 6
0
    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);
    }