void OnEnable() { index = Criogenia.GetIndex(this.transform.position); Criogenia.tileTypeIndex[index - 1].Remove(new Vector2Int((int)this.transform.position.x, (int)this.transform.position.y)); Criogenia.tileTypeIndex[index - 1].Add(new Vector2Int((int)this.transform.position.x, (int)this.transform.position.y), Criogenia.TileType.Ice); }
public void Regen() { waterBehaviour.isEnabled = false; iceBehaviour.isEnabled = true; collider.size = new Vector2(1, 1); renderer.sprite = breakableIce; Criogenia.tileTypeIndex[Criogenia.GetIndex(this.transform.position) - 1].Remove(new Vector2Int((int)this.transform.position.x, (int)this.transform.position.y)); Criogenia.tileTypeIndex[Criogenia.GetIndex(this.transform.position) - 1].Add(new Vector2Int((int)this.transform.position.x, (int)this.transform.position.y), Criogenia.TileType.Ice); }
void Start() { index = Criogenia.GetIndex(this.transform.position); currentState = startingState; if (currentState) { this.gameObject.GetComponent <SpriteRenderer>().color = Color.green; } else { this.gameObject.GetComponent <SpriteRenderer>().color = Color.red; } Criogenia.leverLayout.Add(this); }
// Update is called once per frame void Update() { playerIndex = Criogenia.GetIndex(this.transform.position); // Verifica se o player pode se mover/interagir if (isInControl) { if (rb.velocity == Vector2.zero) { Criogenia.lastSafePosList[playerIndex - 1].Push(this.gameObject.transform.position); } //MOVIMENTO rb.velocity = new Vector2(Input.GetAxis(Horizontal) * velocidade, Input.GetAxisRaw(Vertical) * velocidade); //define a componente velocity a partir de um vetor //if(rb.velocity.magnitude > velocidade) // rb.velocity = rb.velocity.normalized * velocidade; if (rb.velocity.magnitude != 0f) //analisa o angulo em que o personagem { //se move, indo de 0 a 359 graus if (Input.GetAxis(Vertical) >= 0) { angulo = Vector2.Angle(new Vector2(1, 0), rb.velocity); } else if (Input.GetAxis(Vertical) < 0) { angulo = 360 - Vector2.Angle(new Vector2(1, 0), rb.velocity); } } //CONTROLE DA ORIENTAÇÃO if (angulo <= 60 || angulo >= 300) //muda o valor da variavel orientacao { orientacao = Orientacao.Direita; //dependendo do angulo em que } else if (angulo > 60 && angulo < 120) //o personagem se move { orientacao = Orientacao.Cima; } else if (angulo >= 120 && angulo <= 250) { orientacao = Orientacao.Esquerda; } else { orientacao = Orientacao.Baixo; } animator.SetFloat("SpeedVertical", Mathf.Abs(rb.velocity.y)); animator.SetFloat("SpeedHorizontal", Mathf.Abs(rb.velocity.x)); animator.SetInteger("Orientation", (int)orientacao); //CORRER if (correndo == false) { if (Input.GetButtonDown(Correr) && rb.velocity.magnitude != 0f) { velocidade *= 1.5f; correndo = true; } } else { if (Input.GetButtonUp(Correr) || rb.velocity.magnitude == 0f) { velocidade /= 1.5f; correndo = false; } } } else { if ((Criogenia.WhichTileIsPlayerAt(this.gameObject.transform.position, playerIndex) == Criogenia.TileType.Dry && playerIndex == 1) || (Criogenia.WhichTileIsPlayerAt(this.gameObject.transform.position, playerIndex) == Criogenia.TileType.Dry && playerIndex == 2)) { Debug.Log("Stop."); rb.velocity = Vector2.zero; isInControl = true; } } }
private void OnEnable() { Criogenia.tileTypeIndex[Criogenia.GetIndex(this.transform.position) - 1].Remove(new Vector2Int((int)this.transform.position.x, (int)this.transform.position.y)); Criogenia.tileTypeIndex[Criogenia.GetIndex(this.transform.position) - 1].Add(new Vector2Int((int)this.transform.position.x, (int)this.transform.position.y), Criogenia.TileType.Water); }