void Shoot() { // Armazenando o valor do centro da tela // Vector3 _centerOfScreen = new Vector3(Screen.width / 2f, Screen.height / 2f, 0); // Criando a origem do disparo do RayCast pelo centro da tela // Ray rayOrigin = Camera.main.ScreenPointToRay(_centerOfScreen); // Criando a origem do disparo do RayCast usando a viewport como referencia. O calculo da viewport é feito de 0 a 1. Ray rayOrigin = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0)); // Tipo de dado para armazenar informacao de retorno do raycast informando o que foi atingido. RaycastHit hitInfo; Vector3 forward = transform.TransformDirection(Vector3.forward) * 10; // Chamando o sistema de disparo do RayCast. Verifica se atinge algum object que possui um Collider. Distancia maximo do raio(MaxDepth) = Infinito // if(Physics.Raycast(rayOrigin, Mathf.Infinity)) { // Chamando o sistema de disparo do RayCast. Verifica se atinge algum object que possui um Collider. HitInfo retornará informacoes do objeto atingido. if (Physics.Raycast(rayOrigin, out hitInfo)) { if (hasWeapon) { // Com o Quaternion LookRotatiom e passando a normal do hitinfo o efeito será aplicado na angulacao correta do local atingido. GameObject hitMarker = Instantiate(_hitMarkerPrefab, hitInfo.point, Quaternion.LookRotation(hitInfo.normal)); Destroy(hitMarker, 1f); } // Verifica se atingiu a caixa para fazer a troca pela caixa quebrada Destructables _crateDestroy = hitInfo.transform.GetComponent <Destructables> (); if (_crateDestroy != null) { _crateDestroy.DestroyCrate(); } } // Verifica se o audio já está sendo tocado antes de dispara outro. Evita bug de som. if (_weaponAudio.isPlaying == false) { _weaponAudio.Play(); } // Verifica se player Possui Arma if (hasWeapon) { currentAmmo--; _uiManager.UpdateAmmo(currentAmmo); // Ativa particulas de tiro _muzzleFlash.SetActive(true); } }
public void Impact(Vector2 impactDir, Destructables target) { ShieldImpact clone = Instantiate(impact, parent.transform.position + new Vector3(0, 0, -2), Quaternion.LookRotation(transform.forward, impactDir)) as ShieldImpact; clone.transform.parent = parent.transform; }
public void Impact(Vector2 impactDir, Destructables target) { ShieldImpact clone = Instantiate (impact, parent.transform.position+new Vector3(0,0,-2), Quaternion.LookRotation(transform.forward, impactDir)) as ShieldImpact; clone.transform.parent = parent.transform; }