Como faz para diminuir com tiro um objeto que crescer constatimente?
3 participantes
Página 1 de 1
Como faz para diminuir com tiro um objeto que crescer constatimente?
O script que estou tentando usar é esse.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Buraconegro : MonoBehaviour
{
public float x;
public float y;
public float z;
private bool podecrescer;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.localScale += new Vector3(x, y, z);
if (transform.localScale.x <= 10 && transform.localScale.y <= 10 && transform.localScale.z <= 10)
{
Destroy(gameObject);
}
}
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "tiro")
{
transform.localScale -= new Vector3(-x*3, -y*3, -z*3);
}
}
}
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
O alvo cresce mais do que diminui porque o Update está fazendo ele crescer rápido de mais e os tiros não dão conta.
Tente fazer o objeto crescer com um tempo de intervalo maior:
Tente fazer o objeto crescer com um tempo de intervalo maior:
- Código:
using UnityEngine;
public class BuracoNegro : MonoBehaviour {
public float timeToGrow; // Coloque um intervalo pra crescer
void Start (){
InvokeRepeating("GrowUp", timeToGrow);
}
void GrowUp(){
transform.localScale++;
}
void OnCollisionEnter(Collision collision){
if(collision.gameObject.tag == "tiro")
transform.localScale -= 3;
}
void Update(){
if(transform.localScale <= 10)
Destroy(gameObject);
}
}
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
deu erro em alguns e o VB nao da dica de como corrigir bem.
mesmo corrigindo o "{}" dos ifs. Teria outra dica ?
mesmo corrigindo o "{}" dos ifs. Teria outra dica ?
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
:v Me intrometendo..
Levando em consideração o código da May:
O erro foi dado porque "transform.localScale" é um Vetor3 e na linha 21 você o compara com uma INT...
muda a linha 21 por:
Ah, você pode usar o FixedUpdate invés de Update por questões de performance (Não faz muuuita diferença assim mas quanto mais otimização, melhor, né?)
Outro erro é a linha 12, onde cê tentou somar um Vector como se fosse uma INT, para resolver, substitua:
Outro erro porém com a mesma lógica que os demais acima ^: (LINHA 17)
Valeu xD.
Levando em consideração o código da May:
O erro foi dado porque "transform.localScale" é um Vetor3 e na linha 21 você o compara com uma INT...
muda a linha 21 por:
- Código:
if (transform.localScale.magnitude < (Vector3.one * 10).magnitude)
Ah, você pode usar o FixedUpdate invés de Update por questões de performance (Não faz muuuita diferença assim mas quanto mais otimização, melhor, né?)
Outro erro é a linha 12, onde cê tentou somar um Vector como se fosse uma INT, para resolver, substitua:
- Código:
transform.localScale += Vector3.one;
Outro erro porém com a mesma lógica que os demais acima ^: (LINHA 17)
- Código:
transform.localScale -= Vector3.one * 4;
Valeu xD.
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
Muito obrigado por tentarem ajudar, mas mesmo assim ainda nao funcionou, vou tentar quebrara mais a cabeça nisso, mesmo assim obrigado. Sz.
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
Estranho, pode dar um print dos erros ou o que está acontecendo?
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
Não é erro, é que quando atiro no buraco negro ele nao diminui mesmo o prefab do tiro estando com tag "tiro" e com collider em is tringer ativado.
script: https://prnt.sc/ql2wwa
Tiro: https://prnt.sc/ql2ws2a
BuracoNegro: https://prnt.sc/ql2x1z
script: https://prnt.sc/ql2wwa
Tiro: https://prnt.sc/ql2ws2a
BuracoNegro: https://prnt.sc/ql2x1z
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
Nãaaaa my friend! Você confundiu Trigger com Collider!
Existe duas funções:
OnTriggerEnter
e
OnCollisionEnter
desativa o isTrigger e pronto, resolve xD
Existe duas funções:
OnTriggerEnter
e
OnCollisionEnter
desativa o isTrigger e pronto, resolve xD
NKKF- ProgramadorMaster
- PONTOS : 4817
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
Na verdade as chaves do if não são necessárias porque só é uma linha de comando.
Enfim, pensei que o Unity já tinha sobrecarregado os operadores de ++ e comparação pra trabalhar com Vector, o usuário ter que fazer isso é bem chato.
Enfim, obrigada pelas correções NKKF!
Enfim, pensei que o Unity já tinha sobrecarregado os operadores de ++ e comparação pra trabalhar com Vector, o usuário ter que fazer isso é bem chato.
Enfim, obrigada pelas correções NKKF!
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
NKKF escreveu:Nao foi mesmo assim men.
MayLeone escreveu:Gostei muito do seu site pessoal e do que sobre yugioh. Parabéns.
Re: Como faz para diminuir com tiro um objeto que crescer constatimente?
A sobrecarga que daria pra fazer facilmente:
Sobrecarregando esses operadores:
- Código:
transform.localScale = transform.localScale +3;
transform.localScale = transform.localScale + 1;
if(transform.localScale <= 10);
Sobrecarregando esses operadores:
- Código:
public struct Vector3{
float x,y,z ;
public Vector3(float x, float y, float z){
this.x = x;
this.y = y;
this.z = z;
}
public static Vector3 operator +(Vector3 a, float n){
return new Vector3(
a.x + n, a.y +n, a.z+n);
}
public static bool operator >= (Vector3 a, float n){
return a.x >= n && a.y >= n && a.z >= n;
}
public static bool operator <=(Vector3 a, float n){
return a.x <= n && a.y <= n
&& a.z <= n;
}
public override string ToString (){
return "(" + x + ", " + y + ", " +z + ")";
}
}
Tópicos semelhantes
» Como fazer para o tiro ir para a direção onde o cano está apontado e não para cima
» Como faço para mudar a posição de um objeto para perto de outro.
» [RESOLVIDO] Como tiro o Parent de um objeto???
» Como fazer para interagir um objeto com um outro objeto [Estilo Granny]
» Como fazer para um objeto não colidir com um "collider" e o outro objeto si
» Como faço para mudar a posição de um objeto para perto de outro.
» [RESOLVIDO] Como tiro o Parent de um objeto???
» Como fazer para interagir um objeto com um outro objeto [Estilo Granny]
» Como fazer para um objeto não colidir com um "collider" e o outro objeto si
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos