Entender um script
2 participantes
Página 1 de 1
Entender um script
Eu não estou conseguindo entender uma parte de um script e queria uma ajuda(se puder me explicar linha por linha eu agradeço). A parte q eu n entendo é essa:
O código inteiro é esse:
- Código:
Collider2D[] colliders = new Collider2D[3];
transform.Find("AttackCollider").gameObject.GetComponent<Collider2D>().OverlapCollider(new ContactFilter2D(), colliders);
for(int i = 0; i < colliders.Length; i++)
{
if(colliders[i]!= null && colliders[i].gameObject.CompareTag("Enemy")){
Enemy.life2--;
if(Enemy.life2 == 0)
{
Destroy(colliders[i].gameObject);
}
}
O código inteiro é esse:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerM : MonoBehaviour
{
public int speed;
public float jumpForce;
public bool isGrounded;
public Text textMaca;
public Text textLife;
public int maca;
public int life;
public GameObject lastCheckPoint;
public GameObject attack;
void Start()
{
textMaca.text = maca.ToString();
textLife.text = life.ToString();
}
void Update()
{
Rigidbody2D rb = GetComponent<Rigidbody2D>();
SpriteRenderer spr = GetComponent<SpriteRenderer>();
float move = Input.GetAxisRaw("Horizontal");
rb.velocity = new Vector2(move * speed, rb.velocity.y);
if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
{
rb.AddForce(new Vector2(0, jumpForce));
}
if(move < 0)
{
spr.flipX = true;
}
else if(move > 0)
{
spr.flipX = false;
}
if (Input.GetKeyDown(KeyCode.Mouse0))
{
GetComponent<Animator>().SetTrigger("Hammer");
Collider2D[] colliders = new Collider2D[3];
transform.Find("AttackCollider").gameObject.GetComponent<Collider2D>().OverlapCollider(new ContactFilter2D(), colliders);
for(int i = 0; i < colliders.Length; i++)
{
if(colliders[i]!= null && colliders[i].gameObject.CompareTag("Enemy")){
Enemy.life2--;
if(Enemy.life2 == 0)
{
Destroy(colliders[i].gameObject);
}
}
}
}
}
void OnCollisionEnter2D(Collision2D eu)
{
Rigidbody2D rb = GetComponent<Rigidbody2D>();
if (eu.gameObject.CompareTag("Enemy"))
{
life--;
textLife.text = life.ToString();
if (life == 0)
{
life = 3;
textLife.text = life.ToString();
transform.position = lastCheckPoint.transform.position;
}
}
if (eu.gameObject.CompareTag("Platform"))
{
isGrounded = true;
}
if (eu.gameObject.CompareTag("Trampolim"))
{
rb.velocity = new Vector2(0f,10f);
}
}
void OnCollisionExit2D(Collision2D eu)
{
if (eu.gameObject.CompareTag("Platform"))
{
isGrounded = false;
}
}
void OnTriggerEnter2D(Collider2D eu2)
{
if (eu2.gameObject.CompareTag("maca"))
{
Destroy(eu2.gameObject);
maca++;
textMaca.text = maca.ToString();
}
if (eu2.gameObject.CompareTag("Portal"))
{
lastCheckPoint = eu2.gameObject;
}
}
}
Hamassfall- Avançado
- PONTOS : 2068
REPUTAÇÃO : 7
Respeito as regras :
Re: Entender um script
Não sei exatamente o contexto do script, mas tudo indica que a pessoa estoca dentro de um array todos os colliders de um objeto chamado "AttackCollider", que estejam colidindo com algo.
Depois verifica através do laço cada collider do array e se o collider tiver tag "Enemy", o inimigo perde uma vida, e quando chegar a zero, esse collider é destruído.
É o que o script parece estar fazendo, mas sem saber o contexto fica difícil mensurar se é isso mesmo.
Na primeira linha declara-se um array com 3 elementos do tipo Collider2D para estocar os possíveis colliders.
Depois, usa a função "Find" para encontar um objeto na cena com nome "AttackCollider", porém, usa-se a função OverlapCollider do componente de colisões para armazenar no array os colliders desse objeto que estão sobrepondo algo.
Daí na parte do for, percorre todos os elementos do array (colliders que estão colidindo com algo).
No If verifica se o elemento do array não é nulo (possivelmente para evitar de tentar ler ele se ele for destruído depois) e se a TAG daquele collider for "Enemy".
Se sim, decrementa a vida do inimigo, e verifica se a vida é zero, caso for, ele destrói esse elemento de colisão do laço.
Depois verifica através do laço cada collider do array e se o collider tiver tag "Enemy", o inimigo perde uma vida, e quando chegar a zero, esse collider é destruído.
É o que o script parece estar fazendo, mas sem saber o contexto fica difícil mensurar se é isso mesmo.
Na primeira linha declara-se um array com 3 elementos do tipo Collider2D para estocar os possíveis colliders.
Depois, usa a função "Find" para encontar um objeto na cena com nome "AttackCollider", porém, usa-se a função OverlapCollider do componente de colisões para armazenar no array os colliders desse objeto que estão sobrepondo algo.
Daí na parte do for, percorre todos os elementos do array (colliders que estão colidindo com algo).
No If verifica se o elemento do array não é nulo (possivelmente para evitar de tentar ler ele se ele for destruído depois) e se a TAG daquele collider for "Enemy".
Se sim, decrementa a vida do inimigo, e verifica se a vida é zero, caso for, ele destrói esse elemento de colisão do laço.
Tópicos semelhantes
» Alguém poderia me ajudar a entender esse script
» Meu script de Movimento não deixa meu script do Pulo duplo funcionar.
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Como acessar variável de um script usando outro script (Entre e entenda).
» Não Acho o Erro no Script - é um script para o player se mover
» Meu script de Movimento não deixa meu script do Pulo duplo funcionar.
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Como acessar variável de um script usando outro script (Entre e entenda).
» Não Acho o Erro no Script - é um script para o player se mover
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos