Inheritance: MonoBehaviour
Ejemplo n.º 1
0
    void Update()
    {
        if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject())
        {
            Vector3 point = new Vector3(_camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
            Ray     ray   = _camera.ScreenPointToRay(point);

            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                GameObject     hitObject = hit.transform.gameObject;
                ReactiveTarget target    = hitObject.GetComponent <ReactiveTarget>();
                WanderingAI    ai        = hitObject.GetComponent <WanderingAI>();
                BackAndForth   sphere    = hitObject.GetComponent <BackAndForth>();
                if (target != null && ai._alive)
                {
                    target.ReactToHit();
                    soundSource.PlayOneShot(hitEnemySound);
                    Messenger.Broadcast(GameEvent.ENEMY_HIT);
                }
                else
                {
                    soundSource.PlayOneShot(hitWallSound);
                    StartCoroutine(SphereIndicator(hit.point));
                }

                if (sphere != null)
                {
                    Destroy(sphere.gameObject);
                }
            }
        }
    }
Ejemplo n.º 2
0
 void Start()
 {
     backAndForth   = GetComponentInParent <BackAndForth>();
     originalAngles = transform.rotation.eulerAngles;
     targetableTags.Add("Player");
     targetableTags.Add("Mech");
 }
Ejemplo n.º 3
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        //we also add a debug log to know what the projectile touch
        Debug.Log("Projectile Collision with " + other.gameObject);

        BackAndForth enemyController = other.gameObject.GetComponent <BackAndForth>();

        if (enemyController != null)
        {
            enemyController.Fix();
        }

        Destroy(gameObject);
    }
Ejemplo n.º 4
0
        public static MovementPattern CreateMovementPattern(Dictionary <string, object> movementPatternProperties)
        {
            MovementPattern movementPattern = null;

            Vector2 startPosition;

            if (movementPatternProperties.ContainsKey("startXPosition") && movementPatternProperties.ContainsKey("startYPosition"))
            {
                startPosition.X = (float)movementPatternProperties["startXPosition"];
                startPosition.Y = (float)movementPatternProperties["startYPosition"];
            }
            else
            {
                startPosition = default(Vector2);
            }

            int speed;

            if (movementPatternProperties.ContainsKey("speed"))
            {
                speed = Convert.ToInt32((float)movementPatternProperties["speed"]);
            }
            else
            {
                speed = 0;
            }

            switch (movementPatternProperties["movementPatternType"])
            {
            case "playerInput":
                // spawning
                Vector2 spawnPosition;
                spawnPosition.X = (float)movementPatternProperties["spawnXPosition"];
                spawnPosition.Y = (float)movementPatternProperties["spawnYPosition"];

                // movement pattern
                movementPattern = new PlayerInput(spawnPosition, startPosition, speed);
                break;

            case "linear":
                Vector2 velocity;
                velocity.X = (float)movementPatternProperties["xVelocity"];
                velocity.Y = (float)movementPatternProperties["yVelocity"];

                startPosition.X = (float)movementPatternProperties["xPosition"];
                startPosition.Y = (float)movementPatternProperties["yPosition"];
                movementPattern = new Linear(startPosition, velocity, speed);
                break;

            case "backAndForth":
                // spawning
                spawnPosition.X = (float)movementPatternProperties["spawnXPosition"];
                spawnPosition.Y = (float)movementPatternProperties["spawnYPosition"];

                // movement pattern
                startPosition.X = (float)movementPatternProperties["startXPosition"];
                startPosition.Y = (float)movementPatternProperties["startYPosition"];

                Vector2 endPosition;
                endPosition.X = (float)movementPatternProperties["endXPosition"];
                endPosition.Y = (float)movementPatternProperties["endYPosition"];

                int numberOfCycles = Convert.ToInt32((float)movementPatternProperties["numberOfCycles"]);

                movementPattern = new BackAndForth(startPosition, endPosition, speed, numberOfCycles);
                break;

            case "static":
                startPosition.X = (float)movementPatternProperties["xPosition"];
                startPosition.Y = (float)movementPatternProperties["yPosition"];
                movementPattern = new Static(startPosition);
                break;

            case "pattern":
                List <Vector2> points       = new List <Vector2>();
                List <object>  listOfPoints = (List <object>)movementPatternProperties["points"];
                foreach (List <object> point in listOfPoints)
                {
                    points.Add(new Vector2((float)point[0], (float)point[1]));
                }

                numberOfCycles = Convert.ToInt32((float)movementPatternProperties["numberOfCycles"]);

                movementPattern = new Pattern(points[0], speed, points, numberOfCycles);
                break;

            case "runAndGun":
                Vector2 stopPosition;
                stopPosition.X = (float)movementPatternProperties["endXPosition"];
                stopPosition.Y = (float)movementPatternProperties["endYPosition"];

                // timer
                System.Timers.Timer timer = new System.Timers.Timer((float)movementPatternProperties["timeBeforeExit"] * 1000);

                movementPattern = new RunAndGun(startPosition, stopPosition, speed, timer);
                break;

            case "bounce":
                startPosition.X = (float)movementPatternProperties["startXPosition"];
                startPosition.Y = (float)movementPatternProperties["startYPosition"];

                movementPattern = new Bounce(startPosition, speed);
                break;

            case "circular":
                int     numberOfTimesToCycle = Convert.ToInt32((float)movementPatternProperties["timesToCycles"]);
                Vector2 originPosition;
                originPosition.X = (float)movementPatternProperties["originXPosition"];
                originPosition.Y = (float)movementPatternProperties["originYPosition"];
                float radius = (float)movementPatternProperties["radius"];
                float amountToIncreaseRadiusBy = (float)movementPatternProperties["amountToIncreaseRadiusBy"];
                float degreesToRotate          = (float)movementPatternProperties["degreesToRotate"];
                float startingDegrees          = (float)movementPatternProperties["startingDegrees"];

                movementPattern = new Circular(numberOfTimesToCycle, originPosition, radius, amountToIncreaseRadiusBy, degreesToRotate, startingDegrees);
                break;

            case "randomWithBounds":
                int upperXBound = Convert.ToInt32((float)movementPatternProperties["upperXBound"]);
                int lowerXBound = Convert.ToInt32((float)movementPatternProperties["lowerXBound"]);
                int upperYBound = Convert.ToInt32((float)movementPatternProperties["upperYBound"]);
                int lowerYBound = Convert.ToInt32((float)movementPatternProperties["lowerYBound"]);
                timer = new System.Timers.Timer((float)movementPatternProperties["timeBeforeExit"] * 1000);

                movementPattern = new RandomWithBounds(startPosition, speed, upperXBound, lowerXBound, upperYBound, lowerYBound, timer);
                break;

            default:
                throw new Exception("Invalid Entity");
            }

            return(movementPattern);
        }