Vision Quest


Play Now:


Unity 3d/ C#


Vision Quest was a game made for a 48 hour game jam. The jam theme was ‘What do we do now’  We interpreted the theme to mean that the world ended, and the three spirit animals had to answer the question of how they put things back together. To restore the world, each animal must find a talisman or symbol. Each spirit animal had its own level where the talisman was hidden. Each level also featured a challenge to serve as an obstacle  to the player completing that goal.

Personal Contribution:

I was a programmer on a team of 4.  I used C# to implement gameplay logic for each level. This included coding the Win condition, (Player collides with talisman) and the level specific loss condition (Player collides with fire or lightning) On one level, we had a forest fire that was constantly moving in on the player. I coded this effect as well.



Example Code

using UnityEngine;
using System.Collections;

public class EagleFly : MonoBehaviour {
    public float speed = 1.0F;
    public float eagleSpeed = 1.0F;
    float minX = -10;
    float maxX = 10;
    float minY = 1.5f;
    float maxY= 20;
    float minZ = -29;
    float maxZ= 1000;
    public float fadeSpeed =1.5f;
    public bool sceneStarting = true;      // Whether or not the scene is still fading in.
    public GameObject Eagle;
    public Fade fade;
    void Start(){
        Eagle = GameObject.FindWithTag("Eagle"); 
        fade = GameObject.FindGameObjectWithTag("Canvas").GetComponent<Fade>();
    void Update() {
        // Create values between this range (minX to maxX) and store in xPos, yPos, ZPos
        float xPos = Mathf.Clamp(Eagle.transform.position.x, minX + 0.1f, maxX);
        float yPos = Mathf.Clamp(Eagle.transform.position.y, minY + 0.1f, maxY);
        float zPos = Mathf.Clamp(Eagle.transform.position.z, minZ + 0.1f, maxZ    );
        Eagle.transform.position = new Vector3(xPos, yPos, zPos);
        //make sure player stays in bounds
        float translation = Input.GetAxis("Horizontal") * speed;
        float vertical = Input.GetAxis("Vertical") * speed;
        translation *= Time.deltaTime;
        vertical *= Time.deltaTime;
        transform.Translate(translation, 0, 0);
        transform.Translate(0, vertical, 0);
        transform.Translate(Vector3.forward * Time.deltaTime* eagleSpeed); 
    IEnumerator MyLoadLevel(float delay, int level)
        yield return new WaitForSeconds(delay);
    IEnumerator OnTriggerEnter(Collider other) //Win and Loss condition
        if( other.gameObject.tag == "Lightning" )

            yield return new WaitForSeconds(5f);
            //Fade to black
            //Load the next level
        //if the player hits the win conditiion:
        //Take them back to the campfire and place a tailisman in the scene
        if(other.gameObject.tag == "Win")
            //Rigidbody.useGravity = true;
            //Player won, put them back at the start
            //StartCoroutine("MyLoadLevel"(5.0f, 1));
            yield return new WaitForSeconds(5f);
            //Fade to black
            //Load the next level
            GameData.birdDefeated = true;