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); }
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); } } }
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"); } } }
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); }