├── README.md └── Scripts em C# + Unity para Game 3D ├── Ataque-Player-3D.cs ├── Ataque-inimigo-3D.cs ├── Gerenciador-Start.cs ├── Menu-game.cs ├── Movimento-Player-3D.cs ├── Movimento-inimigo-3D.cs └── Save-Data.cs /README.md: -------------------------------------------------------------------------------- 1 | ## 🎮| Scripts C# para Criação de Games 3D usando Unity 💻💡 2 | 3 | ## 📖| Sobre 4 | Durante meus estudos no desenvolvimento de jogos digitais, eu me aprofundei bastante na criação de games 3D. Usando as tecnologias da Unity e C#, este repositório contém scripts básicos em C# para o desenvolvimento de um game 3D. 5 | 6 | ## 🗂️| Estrutura do Projeto 7 | - **PlayerMovement.cs**: Script para controlar o movimento do jogador. 8 | - **PlayerAttack.cs**: Script para controlar o ataque do jogador. 9 | - **MovimentoInimigo.cs**: Script para controlar o movimento do inimigo. 10 | - **AtaqueInimigo.cs**: Script para controlar o ataque do inimigo. 11 | - **GameManager.cs**: Script para gerenciar o estado do jogo (pausa, reinício, etc.). 12 | 13 | ## Scripts 14 | 15 | ### PlayerMovement.cs 16 | 17 | ```csharp 18 | 19 | Código do script PlayerMovement.cs 20 | 21 | ``` 22 | ### PlayerAttack.cs 23 | 24 | ```csharp 25 | 26 | PlayerAttack.cs 27 | 28 | ``` 29 | ### Código do script MovimentoInimigo.cs 30 | 31 | ``` csharp 32 | 33 | MovimentoInimigo.cs 34 | 35 | ``` 36 | ### Código do script AtaqueInimigo.cs 37 | 38 | ```csharp 39 | 40 | AtaqueInimigo.cs 41 | 42 | ``` 43 | ### Código do script Game Manager 44 | 45 | ```csharp 46 | 47 | GameManager.cs 48 | 49 | ``` 50 | ## 🖥️| Demostração dos scripts acima no Game 3D na Unity. 51 | 52 | ## 🕹️| Controle do Player 53 | Imagem que mostra o um player em movimento 54 | 55 | ## 🤖| Movimento do inimigo 56 | Imagem que mostra o movimento inimigo no Game 57 | 58 | ## 🔫| Ataque inimgo 59 | Imagem que mostra ataque inimigo 60 | 61 | ## 📝| Como Usar 62 | 63 | 1️⃣ Clone o Repositório: Clone este repositório para sua máquina local. 64 | 65 | 2️⃣ Importe para Unity: Importe os scripts para o seu projeto Unity. 66 | 67 | 3️⃣ Adicione aos GameObjects: Adicione os scripts aos GameObjects correspondentes na sua cena. 68 | 69 | 4️⃣ Configure os Parâmetros: Configure os parâmetros dos scripts no Inspector da Unity conforme necessário. 70 | 71 | ## 👥| Contribuições 72 | Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou enviar pull requests. 73 | 74 | ## ✅| Licença 75 | Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes. 76 | 77 | ## 📲| Contato 78 | Para dúvidas ou sugestões, entre em contato: 79 | 80 | 📨| E-mail: henrique.pedro62@aluno.ifce.edu.br. 81 | -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Ataque-Player-3D.cs: -------------------------------------------------------------------------------- 1 | // Script que determina o ataque de um player em um game 3D na Unity: 2 | 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | 7 | public class PlayerAttack : MonoBehaviour 8 | { 9 | private Animator animator; 10 | public float alcanceAtaque = 2f; 11 | public int dano = 10; 12 | public LayerMask camadaInimigo; 13 | public Transform pontoDeAtaque; 14 | 15 | void Start() 16 | { 17 | animator = GetComponent(); 18 | } 19 | 20 | void Update() 21 | { 22 | if (Input.GetButtonDown("Fire1")) 23 | { 24 | Atacar(); 25 | } 26 | } 27 | 28 | void Atacar() 29 | { 30 | animator.SetTrigger("Attack"); 31 | 32 | Collider[] inimigosAcertados = Physics.OverlapSphere(pontoDeAtaque.position, alcanceAtaque, camadaInimigo); 33 | foreach (Collider inimigo in inimigosAcertados) 34 | { 35 | inimigo.GetComponent().ReceberDano(dano); 36 | } 37 | } 38 | 39 | void OnDrawGizmosSelected() 40 | { 41 | if (pontoDeAtaque == null) 42 | return; 43 | 44 | Gizmos.DrawWireSphere(pontoDeAtaque.position, alcanceAtaque); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Ataque-inimigo-3D.cs: -------------------------------------------------------------------------------- 1 | // Script em C#, para um inimigo realizar seu ataque em game 3D na Unity: 2 | 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | 7 | public class AtaqueInimigo : MonoBehaviour 8 | { 9 | public int dano = 10; 10 | public float alcanceAtaque = 2f; 11 | public LayerMask camadaJogador; 12 | public Transform pontoDeAtaque; 13 | private bool isOnCooldown = false; 14 | public float cooldownTempo = 1.5f; 15 | private Animator animador; 16 | 17 | void Start() 18 | { 19 | animador = GetComponent(); 20 | } 21 | 22 | void Update() 23 | { 24 | VerificarAtaque(); 25 | } 26 | 27 | void VerificarAtaque() 28 | { 29 | Collider[] jogadoresAcertados = Physics.OverlapSphere(pontoDeAtaque.position, alcanceAtaque, camadaJogador); 30 | foreach (Collider jogador in jogadoresAcertados) 31 | { 32 | if (!isOnCooldown) 33 | { 34 | StartCoroutine(Atacar(jogador)); 35 | } 36 | } 37 | } 38 | 39 | IEnumerator Atacar(Collider jogador) 40 | { 41 | isOnCooldown = true; 42 | animador.SetTrigger("Attack"); 43 | jogador.GetComponent().ReceberDano(dano); 44 | yield return new WaitForSeconds(cooldownTempo); 45 | isOnCooldown = false; 46 | } 47 | 48 | void OnDrawGizmosSelected() 49 | { 50 | if (pontoDeAtaque == null) 51 | return; 52 | 53 | Gizmos.DrawWireSphere(pontoDeAtaque.position, alcanceAtaque); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Gerenciador-Start.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.SceneManagement; 5 | 6 | public class GameManager : MonoBehaviour 7 | { 8 | private bool isPaused = false; 9 | 10 | void Update() 11 | { 12 | if (Input.GetKeyDown(KeyCode.Escape)) 13 | { 14 | if (isPaused) 15 | { 16 | ResumeGame(); 17 | } 18 | else 19 | { 20 | PauseGame(); 21 | } 22 | } 23 | } 24 | 25 | public void PauseGame() 26 | { 27 | Time.timeScale = 0f; 28 | isPaused = true; 29 | } 30 | 31 | public void ResumeGame() 32 | { 33 | Time.timeScale = 1f; 34 | isPaused = false; 35 | } 36 | 37 | public void RestartGame() 38 | { 39 | SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); 40 | } 41 | 42 | public void QuitGame() 43 | { 44 | Application.Quit(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Menu-game.cs: -------------------------------------------------------------------------------- 1 | // Script para colocar menu em um Game 3D, ou 2D na Unity: 2 | 3 | using UnityEngine; 4 | using UnityEngine.SceneManagement; 5 | 6 | public class MenuManage : MonoBehaviour 7 | { 8 | public void StartGame() 9 | { 10 | SceneManager.LoadScene(1); // Carrega a cena de índice 1 11 | } 12 | 13 | public void ExitGames() 14 | { 15 | #if UNITY_EDITOR 16 | UnityEditor.EditorApplication.isPlaying = false; 17 | #else 18 | Application.Quit(); // Sai do jogo em build 19 | #endif 20 | } 21 | } -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Movimento-Player-3D.cs: -------------------------------------------------------------------------------- 1 | // Script que determina o movimento de um player em um game 3D na Unity: 2 | 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | 7 | public class PlayerMovement : MonoBehaviour 8 | { 9 | private CharacterController controlador; 10 | private Transform minhaCamera; 11 | private Animator animator; 12 | public float velocidade = 2f; 13 | 14 | void Start() 15 | { 16 | controlador = GetComponent(); 17 | minhaCamera = Camera.main.transform; 18 | animator = GetComponent(); 19 | 20 | } 21 | 22 | void Update() 23 | { 24 | float horizontal = Input.GetAxis("Horizontal"); 25 | float vertical = Input.GetAxis("Vertical"); 26 | Vector3 movimento = new Vector3(horizontal, 0, vertical); 27 | movimento = minhaCamera.TransformDirection(movimento); 28 | movimento.y = 0; 29 | 30 | controlador.Move(movimento * Time.deltaTime * velocidade); 31 | controlador.Move(new Vector3(0, -9.81f, 0) * Time.deltaTime); 32 | 33 | if (movimento!= Vector3.zero) 34 | { 35 | transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(movimento), Time.deltaTime *10); 36 | 37 | } 38 | animator.SetBool("Move", movimento != Vector3.zero); Debug.Log(movimento); 39 | } 40 | } -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Movimento-inimigo-3D.cs: -------------------------------------------------------------------------------- 1 | // Script para o que um inimigo realize seu movimento padrão de NPC em um Game na Unity: 2 | 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | 7 | public class MovimentoInimigo : MonoBehaviour 8 | { 9 | public Transform pontoA; 10 | public Transform pontoB; 11 | public float velocidade = 1f; 12 | 13 | private Vector3 direcao; 14 | private bool viradoDireita = true; 15 | private Rigidbody2D rb; 16 | 17 | void Start() 18 | { 19 | rb = GetComponent(); 20 | direcao = (pontoB.position - pontoA.position).normalized; 21 | } 22 | 23 | void Update() 24 | { 25 | Mover(); 26 | Virar(); 27 | } 28 | 29 | void Mover() 30 | { 31 | rb.velocity = new Vector2(direcao.x * velocidade, rb.velocity.y); 32 | 33 | if (Vector2.Distance(transform.position, pontoB.position) < 0.1f) 34 | { 35 | direcao = (pontoA.position - pontoB.position).normalized; 36 | Flipar(); 37 | } 38 | else if (Vector2.Distance(transform.position, pontoA.position) < 0.1f) 39 | { 40 | direcao = (pontoB.position - pontoA.position).normalized; 41 | Flipar(); 42 | } 43 | } 44 | 45 | void Virar() 46 | { 47 | if ((direcao.x > 0 && !viradoDireita) || (direcao.x < 0 && viradoDireita)) 48 | { 49 | Flipar(); 50 | } 51 | } 52 | 53 | void Flipar() 54 | { 55 | viradoDireita = !viradoDireita; 56 | Vector3 escalaLocal = transform.localScale; 57 | escalaLocal.x *= -1; 58 | transform.localScale = escalaLocal; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Scripts em C# + Unity para Game 3D/Save-Data.cs: -------------------------------------------------------------------------------- 1 | // Script para salvar o progresso em um Game 2D, e 3D na Unity: 2 | 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using UnityEngine; 6 | 7 | public class SaveData : MonoBehaviour 8 | { 9 | 10 | public float vidaJogador = 100f; 11 | public bool podeSalvar = false; 12 | 13 | private Vector3 ultimaPosicaoSalva; 14 | private float ultimaVidaSalva; 15 | private bool temDadosSalvos = false; 16 | 17 | private void OnControllerColliderHit(ControllerColliderHit hit) 18 | { 19 | 20 | } 21 | 22 | void Start() 23 | { 24 | 25 | } 26 | 27 | // Update is called once per frame 28 | void Update() 29 | { 30 | 31 | } 32 | } --------------------------------------------------------------------------------