Exemple #1
0
    // Start is called before the first frame update
    void Start()
    {
        projectileScriptv2 = GameObject.Find("Projectile Group").GetComponent <ProjectileScriptv2>();
        obstaclesScript    = GameObject.Find("Obstacles Group").GetComponent <ObstaclesScript>();
        slingshotScriptv2  = GameObject.Find("Slingshot Group").GetComponent <SlingshotScriptv2>();
        scoreScript        = GameObject.Find("ScoreScript").GetComponent <ScoreScript>();

        character = "Cat";
        gameStart = false;
        replay    = false;

        timeLeft = 60;
    }
    public bool CheckObstacleCollision(FootstepPlanningState state, ObstaclesScript script)
    {
        //if (state == null || script == null)
        //	return false;

        if (script.ShapeChoice.Shape == Enum.Enumeration.Sphere)
        {
            Vector3 obstaclePos = script.gameObj.transform.position;
            Vector3 aux         = obstaclePos - state.currentPosition;

            float sphereRadius = script.size.x;

            return((aux.magnitude - sphereRadius - analyzer.GetRadius()) <= 0);
        }
        else if (script.ShapeChoice.Shape == Enum.Enumeration.Rectangle)
        {
            Bounds box = script.gameObj.collider.bounds;

            return(box.SqrDistance(state.currentPosition) <= analyzer.GetRadius());
        }

        return(false);
    }
Exemple #3
0
    public bool CheckObstacleCollision(Vector3 pos, ObstaclesScript script)
    {
        //if (state == null || script == null)
        //	return false;

        if (script.ShapeChoice.Shape == Enum.Enumeration.Sphere)
        {
            Vector3 obstaclePos = script.gameObj.transform.position;
            Vector3 aux         = obstaclePos - pos;

            float sphereRadius = script.size.x;

            return((aux.magnitude - sphereRadius - agentRadius) <= 0);
        }
        else if (script.ShapeChoice.Shape == Enum.Enumeration.Rectangle)
        {
            Bounds box = script.gameObj.collider.bounds;

            return(box.SqrDistance(pos) <= agentRadius);
        }

        return(false);
    }
    // Collisions check with deterministic dynamic obstacles
    public bool CheckDynamicObstaclesCollisions(FootstepPlanningState state)
    {
        if (obstacles == null)
        {
            return(false);
        }

        if (obstacles.closeObstacles == null)
        {
            return(false);
        }

        List <DDObstacle> visibleObstacles = obstacles.visibleObstacles;

        if (visibleObstacles.Count <= 0)
        {
            return(false);
        }

        //float[] actualTime = new float[visibleObstacles.Count];

        // Move obstacles
        //int i = 0;
        foreach (DDObstacle ddObstacle in visibleObstacles)
        {
            ObstaclesScript obstacleScript = ddObstacle.script;

            float timeWindow = 0;
            //for (float timeWindow = -0.5f; timeWindow <= 0.5f; timeWindow += 0.5f)
            {
                if (obstacleScript != null)
                {
                    //actualTime[i] = obstacleScript.animation["test"].time;
                    float actualTime = obstacleScript.animation["test"].time;

                    float time = state.time + timeWindow;

                    obstacleScript.animation["test"].wrapMode = WrapMode.PingPong;
                    obstacleScript.animation["test"].enabled  = true;
                    obstacleScript.animation["test"].time     = time;
                    obstacleScript.animation.Play("test");
                    obstacleScript.animation.Sample();
                    //obstacleScript.animation["test"].enabled = false;

                    //Debug.DrawRay(pair.Value.obstacle.transform.position,4*Vector3.up,Color.blue);

                    state.obstaclePos = ddObstacle.obstacle.transform.position;

                    // Check collisions
                    //bool collision = CheckJointsCollisions(state);
                    //bool collision = CheckRootCollisions(state);
                    //Vector3 aux = state.obstaclePos - state.currentPosition;
                    //bool collision = (aux.magnitude - 1 - analyzer.GetRadius()) < 0;

                    bool collision = CheckObstacleCollision(state, obstacleScript);

                    //if (collision)
                    {
                        //Debug.DrawRay(state.currentPosition,4*Vector3.up,Color.yellow);

                        //Debug.Log("Possible collision detected at" + state.time);
                        //Debug.Break ();
                    }

                    obstacleScript.animation["test"].enabled = true;
                    //obstacleScript.animation["test"].time = actualTime[i];
                    obstacleScript.animation["test"].time = actualTime;
                    obstacleScript.animation.Play("test");
                    obstacleScript.animation.Sample();

                    if (collision)
                    {
                        return(true);
                    }
                }
            }
        }

        return(false);
    }
Exemple #5
0
	public bool CheckObstacleCollision(Vector3 pos, ObstaclesScript script)
	{
		//if (state == null || script == null)
		//	return false;
						
		if (script.ShapeChoice.Shape == Enum.Enumeration.Sphere)
		{
			Vector3 obstaclePos = script.gameObj.transform.position;
			Vector3 aux = obstaclePos - pos;
			
			float sphereRadius = script.size.x;
			
		 	return (aux.magnitude - sphereRadius - agentRadius) <= 0;				
		}
		else if (script.ShapeChoice.Shape == Enum.Enumeration.Rectangle)
		{
			Bounds box = script.gameObj.collider.bounds;
			
			return box.SqrDistance(pos) <= agentRadius;
		}
				
		return false;		
	}	
    public bool CheckObstacleCollision(FootstepPlanningState state, ObstaclesScript script)
    {
        //if (state == null || script == null)
        //	return false;

        if (script.ShapeChoice.Shape == Enum.Enumeration.Sphere)
        {
            Vector3 obstaclePos = script.gameObj.transform.position;
            Vector3 aux = obstaclePos - state.currentPosition;

            float sphereRadius = script.size.x;

         	return (aux.magnitude - sphereRadius - analyzer.GetRadius()) <= 0;
        }
        else if (script.ShapeChoice.Shape == Enum.Enumeration.Rectangle)
        {
            Bounds box = script.gameObj.collider.bounds;

            return box.SqrDistance(state.currentPosition) <= analyzer.GetRadius();
        }

        return false;
    }