Example #1
0
    // Update is called once per frame
    void Update()
    {
        Vector3 dir3 = playerTransform.position - transform.position;
        Vector2 dir  = new Vector2(dir3.x, dir3.y).normalized;

        entityMovement.SetMoveDirection(dir, false);
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        if (LevelInfo.instance.IsAtWaterTile(transform.position))
        {
            m_rigidbody.gravityScale = 0;

            // Calculate direction towards the player
            Vector3 dir3     = playerTransform.position - transform.position;
            Vector2 dir      = new Vector2(dir3.x, dir3.y).normalized;
            var     distance = Vector2.Distance(playerTransform.position, transform.position);

            dir *= (distance < MinDistance) ? -1 : (MaxDistance < 5) ? 0.5f : 1;

            entityMovement.SetMoveDirection(dir, false);

            // Every few seconds, fire a projectile towards the player
            timePassed += Time.deltaTime;
            if (timePassed >= shootingFrequencySeconds)
            {
                GameObject projectile       = Instantiate(projectilePrefab, ProjectileTransform.position, Quaternion.identity, projectilesParent);
                var        projectileScript = projectile.GetComponent <EnemyProjectile>();
                projectileScript.SetMoveDirection((playerTransform.position - transform.position).normalized);
                m_audioSource.PlayOneShot(m_enemyShootSound);
                timePassed = 0;
            }
        }
        else
        {
            m_rigidbody.gravityScale = 1;
        }
    }
Example #3
0
    // Update is called once per frame
    void Update()
    {
        var vertical   = Input.GetAxisRaw("Vertical");
        var horizontal = Input.GetAxisRaw("Horizontal");

        // Cannot go Up if not in the water
        if (!m_entity.InWater())
        {
            vertical = Mathf.Clamp(vertical, -1.0f, 0f);
        }

        //Debug.Log("Vertical " + vertical);

        m_entity.SetMoveDirection(new Vector3(horizontal, vertical, 0), true);

        // Grappling hook
        if (Input.GetKeyDown(KeyCode.Mouse1) && PlayerLevel >= 1)
        {
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            Vector3 dir3          = mousePosition - transform.position;
            Vector2 dir           = new Vector2(dir3.x, dir3.y).normalized;

            foreach (Transform child in grapplingHookParent)
            {
                Destroy(child.gameObject);
            }

            GameObject hook = Instantiate(grapplingHook, transform.position + (Vector3)dir * 0.3f, Quaternion.identity, grapplingHookParent);
            m_lastHook = hook.GetComponent <GrapplingHook>();
            m_lastHook.SetMoveDirection(dir);
            if (PlayerLevel == 1)
            {
                m_lastHook.SetHookSpeed(level1HookSpeed);
            }
            else if (PlayerLevel >= 2)
            {
                m_lastHook.SetHookSpeed(level2HookSpeed);
            }
        }

        // If a movement key is pressed, delete latched hook
        if (
            Input.GetKey(KeyCode.W) ||
            Input.GetKey(KeyCode.A) ||
            Input.GetKey(KeyCode.S) ||
            Input.GetKey(KeyCode.D) ||
            Input.GetKey(KeyCode.LeftArrow) ||
            Input.GetKey(KeyCode.RightArrow) ||
            Input.GetKey(KeyCode.UpArrow) ||
            Input.GetKey(KeyCode.DownArrow)
            )
        {
            if (m_lastHook != null)
            {
                m_lastHook.DeleteIfLatched();
            }
        }
    }