Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (!isInFight && StoryEvent.getIntroEvent() >= 2)
        {
            if (PlayerPrefs.GetInt("CreativeMode") == 0 && StoryEvent.getIntroEvent() >= 6)
            {
                ChangeArmed();
            }
            Unsheatled();
        }
        else
        {
            armed = true;
            Unsheatled();
        }
        Attack();
        if (armed)
        {
            Protection();
        }
        Inactif();
        Animation();

        if ((transform.position - labyrinthPlace).magnitude <= 3 && StoryEvent.getIntroEvent() == 2)
        {
            StoryEvent.IncrementIntroEvent();
        }
    }
Ejemplo n.º 2
0
 void Update()
 {
     SE = StoryEvent.getIntroEvent();
     if (saving)
     {
         ManualSave(this);
         Serialization.SaveWorld(this);
         saving = false;
     }
 }
Ejemplo n.º 3
0
    public static bool SaveWorld(World world)
    {
        StreamWriter file = new StreamWriter(saveFolderName + "/" + world.worldName + "/world.txt");

        file.WriteLine("World : " + world.worldName);
        file.WriteLine("Seed : " + world.seed);
        file.WriteLine("Plane : " + world.plane);
        file.WriteLine("StoryEvent : " + StoryEvent.getIntroEvent());
        file.Close();
        return(true);
    }
Ejemplo n.º 4
0
 // Update is called once per frame
 void Update()
 {
     transform.LookAt(playerPosition);
     if (!audioSource.isPlaying && (StoryEvent.getIntroEvent() == 1 || StoryEvent.getIntroEvent() == 5))
     {
         StoryEvent.IncrementIntroEvent();
     }
     if ((playerPosition.position - transform.position).magnitude <= playerDistance && StoryEvent.getIntroEvent() == 0)
     {
         audioSource.Play();
         StoryEvent.IncrementIntroEvent();
     }
     if (StoryEvent.getIntroEvent() == 4)
     {
         Wolfdead();
         StoryEvent.IncrementIntroEvent();
     }
 }
Ejemplo n.º 5
0
    void Spawn()
    {
        // If the player has no health left...
        if (playerHealth.currentHealth <= 0f || StoryEvent.getIntroEvent() <= 5)
        {
            // ... exit the function.
            return;
        }

        float r    = Random.Range(50f, 100f);
        float téta = Random.Range(0f, 359f);

        pos = new Vector3(player.position.x + r * Mathf.Sin(téta), player.position.y, player.position.z + r * Mathf.Cos(téta));

        pos.y = world.GetChunk((int)pos.x, (int)pos.y, (int)pos.z).meshCollider.bounds.size.y + 0.5f;

        // Create an instance of the enemy prefab at the randomly selected spawn point's position and rotation.
        Instantiate(enemy, pos, Quaternion.LookRotation(new Vector3(Random.rotation.x, 0, Random.rotation.z)));
    }
Ejemplo n.º 6
0
    void Death()
    {
        // The enemy is dead.
        isDead = true;

        // Tell the animator that the enemy is dead.
        anim.SetTrigger("Dead");

        if (StoryEvent.getIntroEvent() == 3)
        {
            StoryEvent.IncrementIntroEvent();
        }

        enemyAttack.enabled = false;
        wolf.enabled        = false;

        // Change the audio clip of the audio source to the death clip and play it (this will stop the hurt clip playing).
        enemyAudio.clip = deathClip;
        enemyAudio.Play();
    }
Ejemplo n.º 7
0
    // Update is called once per frame
    void Update()
    {
        Vector3 targetPosition = new Vector3(target.position.x, target.position.y + 1, target.position.z);
        Vector3 objectPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z);

        float differenceMagnitude = (targetPosition - objectPosition).magnitude;

        Quaternion targetRotation = Quaternion.LookRotation(new Vector3(targetPosition.x - transform.position.x, 0, targetPosition.z - transform.position.z));
        Quaternion newRotation    = Quaternion.Lerp(rb.rotation, targetRotation, rotationSpeed * Time.deltaTime);

        switch (stateMonster)
        {
        case StateMonster.CalculatePath:
            Graph graph = new Graph((int)objectPosition.x, (int)objectPosition.y, (int)objectPosition.z, viewRay);
            graph.createGraph(world);
            nodePath     = graph.shortestWay(new Node((int)Mathf.FloorToInt(targetPosition.x), (int)Mathf.FloorToInt(targetPosition.y), (int)Mathf.FloorToInt(targetPosition.z), 0, 0), new Node((int)Mathf.FloorToInt(objectPosition.x), (int)Mathf.FloorToInt(objectPosition.y), (int)Mathf.FloorToInt(objectPosition.z), 0, 0));
            NodePosition = new Vector3((float)nodePath [0].x, (float)nodePath [0].y, (float)nodePath [0].z);
            INode        = 0;
            stateMonster = StateMonster.Move;
            break;

        case StateMonster.Move:
            Vector3 NP = new Vector3((float)nodePath [nodePath.Length - 1].x, (float)nodePath [nodePath.Length - 1].y, (float)nodePath [nodePath.Length - 1].z);
            if ((targetPosition - NP).magnitude >= minViewDistance)
            {
                stateMonster = StateMonster.Patrol;
                playerEvent.OutFight();
            }
            if (differenceMagnitude <= minViewDistance)
            {
                stateMonster = StateMonster.NoMove;
            }
            if (objectPosition.x >= NodePosition.x - 1.5f && objectPosition.x <= NodePosition.x + 1.5f && objectPosition.z >= NodePosition.z - 1.5f && objectPosition.z <= NodePosition.z + 1.5f)
            {
                INode++;
                if (INode < nodePath.Length)
                {
                    NodePosition = new Vector3((float)nodePath [INode].x, (float)nodePath [INode].y, (float)nodePath [INode].z);
                }
                else
                {
                    stateMonster = StateMonster.NoMove;
                }
            }
            else
            {
                targetRotation = Quaternion.LookRotation(new Vector3(NodePosition.x - transform.position.x, 0, NodePosition.z - transform.position.z));
                if (INode >= nodePath.Length - 1)
                {
                    targetRotation = Quaternion.LookRotation(new Vector3(targetPosition.x - transform.position.x, 0, targetPosition.z - transform.position.z));
                }


                newRotation = Quaternion.Lerp(rb.rotation, targetRotation, rotationSpeed * Time.deltaTime);
                rb.MoveRotation(newRotation);
                rb.MovePosition(transform.position + transform.forward * moveSpeed * Time.deltaTime);
            }
            break;

        case StateMonster.NoMove:
            rb.MoveRotation(newRotation);
            if (differenceMagnitude >= minViewDistance)
            {
                stateMonster = StateMonster.CalculatePath;
            }
            break;

        case StateMonster.Patrol:
            if (differenceMagnitude <= maxViewDistance)
            {
                stateMonster = StateMonster.CalculatePath;
                playerEvent.InFight();
            }
            break;

        case StateMonster.Tobedetermined:
            if (StoryEvent.getIntroEvent() <= 1)
            {
                transform.position = new Vector3(54, 25, 87);
            }
            if (StoryEvent.getIntroEvent() >= 3)
            {
                if (differenceMagnitude > maxViewDistance)
                {
                    stateMonster = StateMonster.Patrol;
                }
                else if (differenceMagnitude < minViewDistance)
                {
                    playerEvent.InFight();
                    stateMonster = StateMonster.NoMove;
                }
                else
                {
                    playerEvent.InFight();
                    stateMonster = StateMonster.CalculatePath;
                }
            }
            break;

        default:
            stateMonster = StateMonster.Tobedetermined;
            break;
        }

        if (differenceMagnitude <= minViewDistance)
        {
            attackMode = true;
        }
        else
        {
            attackMode = false;
        }
        Anim();
    }