Exemplo n.º 1
0
    //Freezes and unfreezes player for some time
    //Manipulates the look of engaged jumper module
    IEnumerator Freeze(GameObject jumperModule)
    {
        GetComponent <Rigidbody2D>().gravityScale = 0.0f;
        m_frozen = true;
        //float timer = m_jumpDelay;
        //float waitTime = m_jumpDelay / 15f;
        bool playerLocked = m_inputTouch.PlayerLocked;

        //FIXME: Need to set up a wait lock until player releases a jump command
        while (playerLocked)
        {
            playerLocked = m_inputTouch.PlayerLocked;
            //TODO: TWEAK WAIT TIME
            yield return(new WaitForSeconds(0.05f));
        }
        //{
//			Color color = jumperModule.renderer.material.color;
//			color.a -= waitTime / m_jumpDelay;
//			jumperModule.renderer.material.color = color;



        //}

        GetComponent <Rigidbody2D>().gravityScale = 1.0f;
        m_frozen = false;
        JumperActivate jumperActivate = jumperModule.GetComponent <JumperActivate>();

        jumperActivate.deActivate();
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
//		if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
//		{
//			m_touchBegin = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
//			m_touching = true;
//		}
//
//		if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
//			m_touchEnd = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);

        foreach (Touch touch in Input.touches)
        {
            if (touch.phase == TouchPhase.Began)
            {
                m_touchBegin = Camera.main.ScreenToWorldPoint(touch.position);

                Collider2D[] cols = Physics2D.OverlapCircleAll(m_touchBegin, m_radius);
                foreach (Collider2D col in cols)
                {
                    if (col.CompareTag("JumperModule"))
                    {
                        m_touchingModule = true;
                        m_currentCol     = col;

                        m_lineRenderer.SetPosition(0, new Vector3(col.transform.position.x, col.transform.position.y, -2.0f));
                        m_lineRenderer.SetPosition(1, new Vector3(col.transform.position.x, col.transform.position.y, -2.0f));
                        m_lineRenderer.enabled = true;

                        m_jumpAreaMovement.activate(m_currentCol.transform.position);
                        break;
                    }
                }
            }

            if (m_touchingModule)
            {
                //if(Input.GetTouch(0).phase == TouchPhase.Moved)
                {
//					m_lineRenderer.SetPosition(1, Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position));
                    Vector3 clamped = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position) - m_currentCol.transform.position;
                    clamped = Vector2.ClampMagnitude(clamped, 8.0f);
                    m_lineRenderer.SetPosition(0, new Vector3(m_currentCol.transform.position.x, m_currentCol.transform.position.y, -2.0f));
                    m_lineRenderer.SetPosition(1, clamped + new Vector3(m_currentCol.transform.position.x, m_currentCol.transform.position.y, -2.0f));
                }
            }

            if (touch.phase == TouchPhase.Ended)
            {
                m_touchEnd = Camera.main.ScreenToWorldPoint(touch.position);

                //if(m_currentCol.CompareTag("JumperModule"))
                if (m_touchingModule)
                {
                    JumperActivate jumperActivate = m_currentCol.GetComponent <JumperActivate>();
                    jumperActivate.activateJumper(m_touchEnd);
                }

                m_touchingModule = false;

                if (m_currentCol == m_playerCurrentCol)
                {
                    m_playerLocked = false;
                }

                m_lineRenderer.enabled = false;

                m_jumpAreaMovement.deactivate();
//				Collider2D[] cols = Physics2D.OverlapCircleAll(m_touchBegin, m_radius);
//
//				foreach(Collider2D col in cols)
//				{
//					if(col.CompareTag("JumperModule"))
//					{
//					    JumperActivate jumperActivate = col.GetComponent<JumperActivate>();
//						jumperActivate.activateJumper(m_touchEnd);
//						break;
//					}
//				}
            }
        }
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        Vector2 lastPlatPos = m_newestPlatPos;                             //Newest platform
        //Vector2 firstPlatPos = m_jumperPlatforms.First.Value.transform.position;	//Oldest platform
        Vector2 firstPlatPos = m_platformsInUse.Peek().transform.position; //Oldest platform

        //If newest platform is less than x units above player, spawn new platform
        if (m_player.transform.position.y - firstPlatPos.y > 15)
        {
            //TODO: Maybe bring this back instead of a static 4.0f
//			foreach(Transform child in m_jumperPlatforms.Last.Value.transform)
//			{
//				if(child.CompareTag("Platform"))
//				   lastPlatWidth = child.collider2D.bounds.size.x;
//			}


            float newPosX, newPosY;
            do
            {
                newPosX = lastPlatPos.x + (Random.value - 0.5f) * m_xMax;
            }while(Mathf.Abs(newPosX - lastPlatPos.x) < m_xMin);                //Maybe revert this to last platform width instead of static 4.0f
            newPosY         = lastPlatPos.y + Random.Range(m_yMin, m_yMax);
            m_newestPlatPos = new Vector2(newPosX, newPosY);

            m_platformsInUse.Dequeue();                         //This platform is no longer "in use"
            //Platform that is to be moved
            GameObject objToMove;

            float spawnValue = Random.value;
            if (spawnValue > 0.85f && m_player.transform.position.y - m_movingJumperPlatforms.Peek().transform.position.y > 15)
            {
                objToMove = m_movingJumperPlatforms.Dequeue();
                m_movingJumperPlatforms.Enqueue(objToMove);
            }
            else
            {
                objToMove = m_jumperPlatforms.First.Value;
                //FIXME: This does not check if the platform is actually at a safe distance
                //Please review this list usage once again, doesn't feel too effective at the moment!!!

                //Remove it from start of list and add it to the end
                m_jumperPlatforms.RemoveFirst();
                m_jumperPlatforms.AddLast(objToMove);
            }

            m_platformsInUse.Enqueue(objToMove);

            objToMove.transform.position = m_newestPlatPos;             //Move the platform
            m_cosmeticsSpawner.SpawnClouds(m_newestPlatPos);            //Spawn some clouds
            JumperActivate jumperActivate = objToMove.GetComponentInChildren <JumperActivate>();
            jumperActivate.reInitialize();

            JumperData jumperData = objToMove.GetComponentInChildren <JumperData>();
            jumperData.reInitialize();
            jumperData.ID = m_nextId;

            ++m_nextId;

            m_enemySpawner.rollSpawner(m_newestPlatPos);

            //			if(m_nextId < 2)
            //				temp = Instantiate(m_largePlat, newPlatPos, Quaternion.identity) as GameObject;
            //			else
            //			{
            //				if(Random.Range(1, 10) > 8)
            //					temp = Instantiate(m_smallPlat, newPlatPos, Quaternion.identity) as GameObject;
            //				else
            //					temp = Instantiate(m_largePlat, newPlatPos, Quaternion.identity) as GameObject;
            //			}
            //			temp.GetComponentInChildren<JumperData>().ID = m_nextId;
            //			m_jumperPlatforms.AddLast(temp);

            //			++m_nextId;
        }

//		if(m_player.transform.position.y - firstPlatPos.y > 15)
//		{
//			Destroy(m_jumperPlatforms.First.Value.gameObject);
//			m_jumperPlatforms.RemoveFirst();
//		}

//		LinkedListNode<GameObject> currentPlat;
//		currentPlat = m_jumperPlatforms.First;	//Start at oldest platform node

        //Check if player passed a new height
        //GOTTA MAKE THIS HAPPEN WHEN WE ATTACH INSTEAD OF JUMP ABOVE
//		while(currentPlat != null)
//		{
//			if(currentPlat.Value.transform.position.y > m_killerHeight && m_player.position.y > currentPlat.Value.transform.position.y)
//				m_killerHeight = currentPlat.Previous.Value.transform.position.y;
//
//			currentPlat = currentPlat.Next;
//		}
    }