Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        var     input       = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
        Vector2 translation = input * speed * Time.deltaTime;

        transform.Translate(translation);

        if (Input.GetButtonDown("Fire1"))
        {
            Vector3 mousePosition           = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector3 direction               = (mousePosition - transform.position).normalized;
            TestPlayerProjectile projectile = Instantiate(projectilePrefab, transform.position, Quaternion.identity);
            projectile.Fire(direction);
        }
    }
Exemplo n.º 2
0
        //
        // @Summary: Calculates position enemy needs to move to for successfuly dodge
        //
        public override void Startup()
        {
            // get potential threats
            Collider2D[] potentialThreats = Physics2D.OverlapCircleAll(enemy.transform.position, detectionRange);
            Vector3      direction        = new Vector3(0f, 0f, 0f);

            foreach (var threat in potentialThreats)
            {
                TestPlayerProjectile projectile = threat.GetComponent <TestPlayerProjectile>();
                if (projectile != null)
                {
                    // calculate desired direction to avoid the threat
                    direction   = enemy.transform.position - projectile.transform.position;
                    direction.z = 0f;
                    direction.Normalize();
                    direction = Vector2.Perpendicular(direction);

                    // flip direction depending on projectile's future position relative to the enemy
                    Vector3 projFuturePosition = projectile.transform.position + projectile.velocity * Time.deltaTime;
                    // change y direction
                    if (direction.y > 0 && projFuturePosition.y > enemy.transform.position.y ||
                        direction.y < 0 && projFuturePosition.y < enemy.transform.position.y)
                    {
                        direction.y = -direction.y;
                    }
                    // change x direction
                    if (direction.x > 0 && projFuturePosition.x > enemy.transform.position.x ||
                        direction.x < 0 && projFuturePosition.x < enemy.transform.position.x)
                    {
                        direction.x = -direction.x;
                    }
                    break;
                }
            }

            endPosition = enemy.transform.position + direction * dodgeDistance;
        }