Ejemplo n.º 1
0
    void OnInteract(GameObject caller)
    {
        m_PlayerSpellsManager       = caller.GetComponent <PlayerSpellsManager>();
        m_PlayerCharacterController = caller.GetComponent <PlayerCharacterController>();
        m_PlayerInputHandler        = caller.GetComponent <PlayerInputHandler>();

        m_PlayerCharacterController.paused = true;
        waitingForSpellBinding             = true;
        textBox.SetActive(true);
    }
Ejemplo n.º 2
0
    void OnShoot()
    {
        m_ShootTime         = Time.time;
        m_LastRootPosition  = root.position;
        m_Velocity          = transform.forward * speed;
        m_IgnoredColliders  = new List <Collider>();
        transform.position += m_ProjectileBase.inheritedMuzzleVelocity * Time.deltaTime;

        // Ignore colliders of owner
        Collider[] ownerColliders = m_ProjectileBase.owner.GetComponentsInChildren <Collider>();
        m_IgnoredColliders.AddRange(ownerColliders);

        // Handle case of player shooting (make projectiles not go through walls, and remember center-of-screen trajectory)
        Transform spellCameraPosition;
        Transform SpellParentSocket;

        m_IsPlayerSpell = (m_ProjectileBase.owner.GetComponent <PlayerStatsController>() != null);

        if (m_IsPlayerSpell)
        {
            PlayerSpellsManager playerSpellsManager = m_ProjectileBase.owner.GetComponent <PlayerSpellsManager>();
            SpellParentSocket   = playerSpellsManager.SpellParentSocket.transform;
            spellCameraPosition = playerSpellsManager.spellCamera.transform;
        }
        else
        {
            EnemySpellsManager enemySpellsManager = m_ProjectileBase.owner.GetComponent <EnemySpellsManager>();
            SpellParentSocket   = enemySpellsManager.SpellParentSocket.transform;
            spellCameraPosition = enemySpellsManager.spellCamera.transform;
        }

        m_HasTrajectoryOverride = true;
        Vector3 cameraToMuzzle = m_ProjectileBase.initialPosition;

        m_TrajectoryCorrectionVector = Vector3.ProjectOnPlane(-cameraToMuzzle, SpellParentSocket.forward);
        if (trajectoryCorrectionDistance == 0)
        {
            transform.position += m_TrajectoryCorrectionVector;
            m_ConsumedTrajectoryCorrectionVector = m_TrajectoryCorrectionVector;
        }
        else if (trajectoryCorrectionDistance < 0)
        {
            m_HasTrajectoryOverride = false;
        }

        if (Physics.Raycast(spellCameraPosition.position, cameraToMuzzle.normalized, out RaycastHit hit, cameraToMuzzle.magnitude, hittableLayers, k_TriggerInteraction))
        {
            if (IsHitValid(hit.collider))
            {
                OnHit(hit.collider);
            }
        }
    }
Ejemplo n.º 3
0
    void OnShoot()
    {
        PlayerSpellsManager       playerSpellsManager       = m_ProjectileBase.owner.GetComponent <PlayerSpellsManager>();
        PlayerCharacterController playerCharacterController = m_ProjectileBase.owner.GetComponent <PlayerCharacterController>();
        Ray        ray = playerSpellsManager.spellCamera.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 100))
        {
            InteractableBase interactable = hit.collider.GetComponent <InteractableBase>();
            if (interactable != null)
            {
                print(string.Format("clicking {0}", hit.collider.name));
                playerCharacterController.SetFocus(interactable);
            }
            else
            {
                print("not interactable");
            }
        }
    }
Ejemplo n.º 4
0
    void OnShoot()
    {
        Collider[] ownerColliders = m_ProjectileBase.owner.GetComponentsInChildren <Collider>();
        m_IgnoredColliders = new List <Collider>();
        m_IgnoredColliders.AddRange(ownerColliders);

        m_ObjectHeight    = tip.position.y - root.position.y;
        m_InitialPosition = root.position + Vector3.down * (m_ObjectHeight + startingDepth);
        m_Velocity        = Vector3.up * speed;
        Transform spellCameraPosition;
        Transform SpellParentSocket;

        m_IsPlayerSpell = (m_ProjectileBase.owner.GetComponent <PlayerStatsController>() != null);

        if (m_IsPlayerSpell)
        {
            ObjectLayers.instance.SetLayerRecursively(gameObject, ObjectLayers.instance.playerProjectile);
            PlayerSpellsManager playerSpellsManager = m_ProjectileBase.owner.GetComponent <PlayerSpellsManager>();
            SpellParentSocket   = playerSpellsManager.SpellParentSocket.transform;
            spellCameraPosition = playerSpellsManager.spellCamera.transform;
        }
        else
        {
            ObjectLayers.instance.SetLayerRecursively(gameObject, ObjectLayers.instance.enemyProjectile);
            EnemySpellsManager enemySpellsManager = m_ProjectileBase.owner.GetComponent <EnemySpellsManager>();
            SpellParentSocket   = enemySpellsManager.SpellParentSocket.transform;
            spellCameraPosition = enemySpellsManager.spellCamera.transform;
        }

        if (Physics.Raycast(spellCameraPosition.position, m_ProjectileBase.initialDirection.normalized, out RaycastHit hit, 100f, hittableLayers))
        {
            if (IsHitValid(hit.collider))
            {
                m_InitialPosition = hit.point + Vector3.down * (m_ObjectHeight + startingDepth);
            }
        }
        transform.position = m_InitialPosition;
        transform.rotation = Quaternion.Euler(0, 30, 0);
    }