├── 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 |
54 |
55 | ## 🤖| Movimento do inimigo
56 |
57 |
58 | ## 🔫| Ataque inimgo
59 |
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 | }
--------------------------------------------------------------------------------