Inheritance: MonoBehaviour
Ejemplo n.º 1
0
    void SpawnObstacle(Vector3 pos, Direction dir){
        if (obstaclesList.Count > 0) {
            LinkedListNode<ObstacleScript> oldest = obstaclesList.Last;
            do {
                ObstacleScript oldestObstacle = oldest.Value;
                if (!oldestObstacle.isCrash && (Mathf.Abs(differenceAlongDirection(play.transform.position, oldestObstacle.transform.position, dirAfterTurn(PlayerScript.currentDirection, true))) > chunkReuseDistance || differenceAlongDirection(play.transform.position, oldestObstacle.transform.position) > chunkReuseDistance)) {
                    HealthBarScript oldHealth = oldestObstacle.GetComponent<HealthBarScript>();
                    oldHealth.health = 100f;
                    oldHealth.healthBar.parent.gameObject.SetActive(false);
                    oldHealth.UpdateHealthBar();
                    oldHealth.transform.position = pos;
                    oldestObstacle.transform.eulerAngles = new Vector3(0, (int)dir, 0);
                    oldestObstacle.ResetDirection();
                    obstaclesList.Remove(oldest);
                    obstaclesList.AddFirst(oldestObstacle);
                    return;
                }
                oldest = oldest.Previous;
            } while (oldest != null);
        }
        
        //or else, just spawn a new obstacle
        int obstacleType = Random.Range(0, obstaclePrefabs.Length);
        GameObject obstacle = Instantiate(obstaclePrefabs[obstacleType], pos, Quaternion.identity);
        obstacle.transform.eulerAngles = new Vector3(0, (int)dir, 0);
        ObstacleScript ob = obstacle.GetComponent<ObstacleScript>();

        obstaclesList.AddFirst(ob);
    }
Ejemplo n.º 2
0
 public void ObstacleInteraction(ObstacleScript obstacle)
 {
     if (GetGunInHolster() == null)
     {
         HolsterGun();
         _playerController.SwitchState <PushingState>(obstacle);
     }
 }
    public override void ResetState(IInteractable obstacle)
    {
        _obstacleScript      = (ObstacleScript)obstacle;
        _obstacleIKLeftHand  = _playerController.ObstacleIKLeftHand;
        _obstacleIKRightHand = _playerController.ObstacleIKRightHand;

        _hasHitObstacle = false;
    }
Ejemplo n.º 4
0
    private int spawnWalls(int i, int currentTotalWalls)
    {
        // control the speed variable
        if (currentTotalWalls == 1)
        {
            currentWallSpeed = 0.1f;
        }
        else if (currentTotalWalls % 5 == 0)
        {
            currentWallSpeed = currentWallSpeed + 0.07f;
        }

        setRespawnTime(Random.Range(1.5f, 4.0f));

        // Spawn wall and obstacle N times where N times is requried to be set;
        if ((i % 2) == 0)
        {
            // increment walls only when wall is spawned
            currentTotalWalls++;

            randWall = Random.Range(1, 4);

            // adds random walls to the scene and assign speed as each object is instantiated
            if (randWall == 1)
            {
                GameObject a = Instantiate(wallBasic1) as GameObject;
                a.transform.position = new Vector3(-1.193203f, 6.31f, 92f);
                WallScript ws = a.GetComponent <WallScript>();
                ws.setWallSpeed(currentWallSpeed);
            }
            else if (randWall == 2)
            {
                GameObject a = Instantiate(wallBasic2) as GameObject;
                a.transform.position = new Vector3(-5.893f, 6.31f, 92f);
                WallScript ws = a.GetComponent <WallScript>();
                ws.setWallSpeed(currentWallSpeed);
            }
            else if (randWall == 3)
            {
                GameObject a = Instantiate(wallBasic3) as GameObject;
                a.transform.position = new Vector3(3.158229f, 6.31f, 92f);
                WallScript ws = a.GetComponent <WallScript>();
                ws.setWallSpeed(currentWallSpeed);
            }
        }
        else
        {
            // adds ball obstacle to the scene in random x location.
            float      randomX  = Random.Range(-7f, 7f);
            GameObject obstacle = Instantiate(ballObject) as GameObject;
            obstacle.transform.position = new Vector3(randomX, 5f, 90f);
            ObstacleScript os = obstacle.GetComponent <ObstacleScript>();
            os.setObstacleSpeed(currentWallSpeed);
        }

        return(currentTotalWalls);
    }
Ejemplo n.º 5
0
    //obstacle avoidance
    public Vector3 AvoidObstacle(List <GameObject> avoidThese)
    {
        Vector3 ultimateForce = Vector3.zero;

        foreach (var obst in avoidThese)
        {
            float dotForward = Vector3.Dot(obst.transform.position - transform.position, transform.forward);

            ObstacleScript obScript = obst.GetComponent <ObstacleScript>();

            if (obScript != null)
            {
                //is it in front and close enough
                if (dotForward > 0 && dotForward < maxObstacleRadius)
                {
                    //will I collide on the left-right plane
                    float dotRight = Vector3.Dot(obst.transform.position - transform.position, transform.right);

                    if (dotRight < radius + obScript.radius)
                    {
                        //will it collide on up-down plane
                        float dotUp = Vector3.Dot(obst.transform.position - transform.position, transform.up);

                        if (dotUp < radius + obScript.radius)
                        {
                            if (dotUp > 0)
                            {
                                ultimateForce += -transform.up * (maxObstacleRadius - dotForward) * dotUp;
                            }
                            if (dotUp > 0)
                            {
                                ultimateForce += transform.up * (maxObstacleRadius - dotForward) * -dotUp;
                            }

                            if (dotRight > 0)
                            {
                                ultimateForce += -transform.right * (maxObstacleRadius - dotForward) * dotRight;
                            }
                            if (dotRight > 0)
                            {
                                ultimateForce += transform.right * (maxObstacleRadius - dotForward) * -dotRight;
                            }

                            //odd edge case
                            if (dotRight == 0 && dotUp == 0)
                            {
                                ultimateForce += (transform.right * Random.Range(.001f, 1f) + transform.up * Random.Range(.001f, 1f)).normalized * (maxObstacleRadius - dotForward);
                            }
                        }
                    }
                }
            }
        }

        return(ultimateForce.normalized);
    }
Ejemplo n.º 6
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        ObstacleScript obstacle = collision.collider.GetComponent <ObstacleScript>();

        if (obstacle != null)
        {
            obstacle.TakeDamage(damage);
        }

        CombatScript disc = collision.collider.GetComponent <CombatScript>();

        if (disc != null)
        {
            disc.catchDisc();
            Destroy(gameObject);
        }
    }
Ejemplo n.º 7
0
 void Stun(ObstacleScript obstacle, int multiplier)
 {
     Health -= obstacle.Damage;
     if (Health > 0)
     {
         StopMomentum(false);
         StartCoroutine(WaitAfterBounceback());
         StartCoroutine(ResetAfterBounceback());
         Physics2D.IgnoreCollision(_activeObstacle, _boxCollider);
         _bounceBack = true;
         _rigidBody.AddForce(new Vector2(multiplier * 3500, 8000));
         _renderer.color = new Color(0.8f, 0.2f, 0.2f);
     }
     else
     {
         Die();
     }
     UpdateHealthBar();
 }
Ejemplo n.º 8
0
	public void moveObstacle()
	{
		if (CarScript.moveDir == 0) 
		{
			float y_pos = upObstacle.transform.position.y;
			float x_pos = upObstacle.transform.position.x;
			float z_pos = upObstacle.transform.position.z;

			float y_player = CarScript.yPos;

			y_pos -= upObstacle.renderer.bounds.size.y/2.0f;
			y_player += CarScript.yHeight/2.0f;
			//upObstacle.transform.position = new Vector3(x_pos,(y_pos+y_player)/2.0f + upObstacle.renderer.bounds.size.y/2.0f,z_pos);

			ObstacleScript obsScript = (ObstacleScript) upObstacle.GetComponent(typeof(ObstacleScript));
			if (obsScript) 
			{
				obsScript.yTarget = (y_pos+y_player)/2.0f + upObstacle.renderer.bounds.size.y/2.0f;
				//obsScript.yTarget = y_player + upObstacle.renderer.bounds.size.y/2.0f;
				obsScript.doMove = true;
			}

		} 
		else if (CarScript.moveDir == 1) 
		{
			float y_pos = downObstacle.transform.position.y;
			float x_pos = downObstacle.transform.position.x;
			float z_pos = downObstacle.transform.position.z;
			
			float y_player = CarScript.yPos;
			y_pos += downObstacle.renderer.bounds.size.y/2.0f;
			y_player -= CarScript.yHeight/2.0f;
			//downObstacle.transform.position = new Vector3(x_pos,(y_pos+y_player)/2.0f - downObstacle.renderer.bounds.size.y/2.0f,z_pos);

			ObstacleScript obsScript = (ObstacleScript) downObstacle.GetComponent(typeof(ObstacleScript));
			if (obsScript) 
			{
				obsScript.yTarget = (y_pos+y_player)/2.0f - downObstacle.renderer.bounds.size.y/2.0f;
				//obsScript.yTarget = y_player - downObstacle.renderer.bounds.size.y/2.0f;
				obsScript.doMove = true;
			}
		}
	}
Ejemplo n.º 9
0
 void Awake()
 {
     instance = this;
     tr       = GetComponent <Transform>();
 }
Ejemplo n.º 10
0
	public void CreateNextObstacle(float prevY)
	{
		GameObject newObstacle;

		int obsType = 1;

		if (SelectedLevelScript.selectedLevel == 1) 
		{
			obsType = obstTypeLvl1[obstacleIndex];
		}
		else if (SelectedLevelScript.selectedLevel == 2) 
		{
			obsType = obstTypeLvl2[obstacleIndex];
		}
		else if (SelectedLevelScript.selectedLevel == 3) 
		{
			obsType = obstTypeLvl3[obstacleIndex];
		}
		else if (SelectedLevelScript.selectedLevel == 4) 
		{
			obsType = obstTypeLvl4[obstacleIndex];
		}else if (SelectedLevelScript.selectedLevel == 5) 
		{
			obsType = obstTypeLvl5[obstacleIndex];
		}
		// Create correct type of obstacle
		if(obsType == 0)
			newObstacle = (GameObject) GameObject.Instantiate(Resources.Load("Obstacle_green", typeof(GameObject)));
		else
			newObstacle = (GameObject) GameObject.Instantiate(Resources.Load("Obstacle_red", typeof(GameObject)));


		// Set id
		ObstacleScript obsScript = (ObstacleScript) newObstacle.GetComponent(typeof(ObstacleScript));
		if (obsScript) 
		{
			obsScript.id = obstacleCount;
		}

		//calculate position

		float obsDist = 0;
		float obsAmount = 0;
		int obsSide = 0;
		float freeSpace = 0;

		if (SelectedLevelScript.selectedLevel == 1) 
		{
			obsDist = obstDistanceLvl1[obstacleIndex];
			obsAmount = obstAmountLvl1[obstacleIndex];
			obsSide = obstSideLvl1[obstacleIndex];
			freeSpace = (0.1f+0.6f*(obsAmount / 100)) * BackgroundScript.stage_bounds.size.x;
		}
		else if (SelectedLevelScript.selectedLevel == 2) 
		{
			obsDist = obstDistanceLvl2[obstacleIndex];
			obsAmount = obstAmountLvl2[obstacleIndex];
			obsSide = obstSideLvl2[obstacleIndex];
			freeSpace = (0.1f + 0.5f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x;
		}
		else if (SelectedLevelScript.selectedLevel == 3) 
		{
			obsDist = obstDistanceLvl3[obstacleIndex];
			obsAmount = obstAmountLvl3[obstacleIndex];
			obsSide = obstSideLvl3[obstacleIndex];
			freeSpace = (0.1f + 0.45f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x;
		}
		else if (SelectedLevelScript.selectedLevel == 4) 
		{
			obsDist = obstDistanceLvl4[obstacleIndex];
			obsAmount = obstAmountLvl4[obstacleIndex];
			obsSide = obstSideLvl4[obstacleIndex];
			freeSpace = (0.1f + 0.45f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x;
		}
		else if (SelectedLevelScript.selectedLevel == 5) 
		{
			obsDist = obstDistanceLvl5[obstacleIndex];
			obsAmount = obstAmountLvl5[obstacleIndex];
			obsSide = obstSideLvl5[obstacleIndex];
			freeSpace = (0.1f + 0.40f * (obsAmount / 100)) * BackgroundScript.stage_bounds.size.x;
		}

		if (SelectedLevelScript.selectedLevel == 1 && iteration < 1 && obstacleIndex < 40) 
		{
			if (freeSpace < 4.5f)
				freeSpace = 4.5f;

		}
		else if (iteration > 3) 
		{
			if (freeSpace < 3f)
					freeSpace = 3f;
		}
		else 
		{
			if (freeSpace < 4f)
				freeSpace = 4f;
		}

		float max_speed = CarScript.getMaxSpeed();

		if (SelectedLevelScript.selectedLevel == 1) 
		{
			max_speed = 250 + CarScript.score / 2.0f;

			if (max_speed > 400)
					max_speed = 400;
		}
		else if (SelectedLevelScript.selectedLevel == 2) 
		{
			max_speed = 300 + CarScript.score / 2.0f;
			
			if (max_speed > 450)
				max_speed = 450;
		}
		else if (SelectedLevelScript.selectedLevel == 3) 
		{
			max_speed = 360 + CarScript.score / 2.0f;
			
			if (max_speed > 500)
				max_speed = 500;
		}
		else if (SelectedLevelScript.selectedLevel == 4) 
		{
			max_speed = 420 + CarScript.score;
			
			if (max_speed > 600)
				max_speed = 600;
		}
		else if (SelectedLevelScript.selectedLevel == 5) 
		{
			max_speed = 510 + CarScript.score;
			
			if (max_speed > 700)
				max_speed = 700;
		}
		CarScript.setMaxSpeed (max_speed);

		float x_pos;

		if (obsSide == 0) {
			x_pos = BackgroundScript.stage_bounds.max.x - freeSpace - newObstacle.collider2D.bounds.size.x/2;
		} 
		else 
		{
			x_pos = BackgroundScript.stage_bounds.min.x+freeSpace+newObstacle.collider2D.bounds.size.x/2;
		}

		float y_space = obsDist / 12f;

		if (y_space < 4.5f)
			y_space = 4.5f;

		float y_pos = prevY+y_space;

		if (obstacleIndex == 0)
			y_pos += 4;
		newObstacle.transform.position = new Vector3(x_pos,y_pos,0);

		obstacleIndex++;
		obstacleCount++;

		if (obstacleIndex > 99)
		{
			obstacleIndex = 0;
			iteration++;
		}
			

	}
Ejemplo n.º 11
0
 public void ObstacleInteraction(ObstacleScript obstacle)
 {
     _playerController.SwitchState <PushingState>(obstacle);
 }
Ejemplo n.º 12
0
 // Use this for initialization
 void Start()
 {
     instance = this;
     trans    = GetComponent <Transform>();
 }