alterar Transform via script
2 participantes
Página 1 de 1
alterar Transform via script
Estou usando transform.LookAt numa seta para apontar pra um objeto desejado, só aceita Transform, não GameObject, mas as vezes vou precisar mudar o objeto que a seta aponta, se fosse GameObject iria falar que GameObject = GameObject.FindWithTag("tag");
porem não da para trocar um Transform assim, não aceita findwithtag
Alguem pode me ajudar a trocar um transform via script? alterar o objeto que a seta aponta.
agradeço desde já
porem não da para trocar um Transform assim, não aceita findwithtag
Alguem pode me ajudar a trocar um transform via script? alterar o objeto que a seta aponta.
agradeço desde já
giowde- Avançado
- PONTOS : 2161
REPUTAÇÃO : 17
Respeito as regras :
Re: alterar Transform via script
public class seta1 : MonoBehaviour
{
public Transform alvo;
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.LookAt(alvo);
}
}
{
public Transform alvo;
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.LookAt(alvo);
}
}
giowde- Avançado
- PONTOS : 2161
REPUTAÇÃO : 17
Respeito as regras :
Re: alterar Transform via script
É feio usar um campo estático perdido num script qualquer? é, mas, é menos feio que sair procurando objeto com GameObject.FindWithTag("tag") kkk.
Esse campo static permite que você acesse-o de qualquer outro script.
Acessando e passando um objeto pra ele:
Esse campo static permite que você acesse-o de qualquer outro script.
- Código:
using UnityEngine;
public class LookAtDinamico : MonoBehaviour
{
public static GameObject objetoLookAt;
private void Update()
{
transform.LookAt(objetoLookAt.transform);
}
}
Acessando e passando um objeto pra ele:
- Código:
using UnityEngine;
public class MudarObjeto : MonoBehaviour
{
public GameObject outroObjeto;
private void AlterarObjeto()
{
LookAtDinamico.objetoLookAt = outroObjeto;
//ou caso queira passar esse objeto
LookAtDinamico.objetoLookAt = this.gameObject;
}
}
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: alterar Transform via script
meu deus, cara, valeu, salvou minha vida, mto obrigadoFagner escreveu:É feio usar um campo estático perdido num script qualquer? é, mas, é menos feio que sair procurando objeto com GameObject.FindWithTag("tag") kkk.
Esse campo static permite que você acesse-o de qualquer outro script.
- Código:
using UnityEngine;
public class LookAtDinamico : MonoBehaviour
{
public static GameObject objetoLookAt;
private void Update()
{
transform.LookAt(objetoLookAt.transform);
}
}
Acessando e passando um objeto pra ele:
- Código:
using UnityEngine;
public class MudarObjeto : MonoBehaviour
{
public GameObject outroObjeto;
private void AlterarObjeto()
{
LookAtDinamico.objetoLookAt = outroObjeto;
//ou caso queira passar esse objeto
LookAtDinamico.objetoLookAt = this.gameObject;
}
}
giowde- Avançado
- PONTOS : 2161
REPUTAÇÃO : 17
Respeito as regras :
Re: alterar Transform via script
vc pode me explicar ql o problema de usar findwithtag?Fagner escreveu:É feio usar um campo estático perdido num script qualquer? é, mas, é menos feio que sair procurando objeto com GameObject.FindWithTag("tag") kkk.
Esse campo static permite que você acesse-o de qualquer outro script.
- Código:
using UnityEngine;
public class LookAtDinamico : MonoBehaviour
{
public static GameObject objetoLookAt;
private void Update()
{
transform.LookAt(objetoLookAt.transform);
}
}
Acessando e passando um objeto pra ele:
- Código:
using UnityEngine;
public class MudarObjeto : MonoBehaviour
{
public GameObject outroObjeto;
private void AlterarObjeto()
{
LookAtDinamico.objetoLookAt = outroObjeto;
//ou caso queira passar esse objeto
LookAtDinamico.objetoLookAt = this.gameObject;
}
}
giowde- Avançado
- PONTOS : 2161
REPUTAÇÃO : 17
Respeito as regras :
Re: alterar Transform via script
Normalmente os "find" são operações de pesquisa, ele vai percorrer cada objeto de uma determinada lista, realizar uma comparação, até achar o que você está procurando. Seu computador é rápido pra fazer operações de cálculos ou pegar um valor específico num lugar específico, mas, a partir do momento que você faz uma pesquisa, esse tempo pra achar o objeto cresce conforme a quantidade de itens que ele vai ter que percorrer.
A mudança que fiz pode não apresentar um resultado significativo no desempenho do teu jogo, mas imagine um jogo maior com milhares de objetos pra procurar todo frame...
Com a criação de um campo static, podemos fazer a analogia a um endereço, seu campo de gameobject agora é um lugar fixo com endereço público que qualquer um consegue achar, então você não precisa mais percorrer uma lista, basta acessar o endereço e pegar o valor que está lá, ou atribuir um novo.
Isso também tem suas desvantagens, e definitivamente você não vai querer usar em todo canto, por exemplo se você tivesse duas setas com esse script, você teria dois campos que deveriam ser únicos mas estão duplicados, isso gera erro.
Se as duas setas precisassem de uma referencia do mesmo objeto, você poderia ter esse script num GameManager(Singleton), as duas acessariam a partir de um único campo estático.
Se cada seta precisasse de um alvo específico, você já teria que usar dois campos com nomes diferentes.
A mudança que fiz pode não apresentar um resultado significativo no desempenho do teu jogo, mas imagine um jogo maior com milhares de objetos pra procurar todo frame...
Com a criação de um campo static, podemos fazer a analogia a um endereço, seu campo de gameobject agora é um lugar fixo com endereço público que qualquer um consegue achar, então você não precisa mais percorrer uma lista, basta acessar o endereço e pegar o valor que está lá, ou atribuir um novo.
Isso também tem suas desvantagens, e definitivamente você não vai querer usar em todo canto, por exemplo se você tivesse duas setas com esse script, você teria dois campos que deveriam ser únicos mas estão duplicados, isso gera erro.
Se as duas setas precisassem de uma referencia do mesmo objeto, você poderia ter esse script num GameManager(Singleton), as duas acessariam a partir de um único campo estático.
Se cada seta precisasse de um alvo específico, você já teria que usar dois campos com nomes diferentes.
Fagner- Moderador
- PONTOS : 4443
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Tópicos semelhantes
» MouseOver alterar de cores solidas para texturas alterar script
» como alterar o Rect Transform?
» tem como alterar a tag de um objeto por script?
» alterar cor via script
» Alterar WaterMode do WaterProDaytime Via script
» como alterar o Rect Transform?
» tem como alterar a tag de um objeto por script?
» alterar cor via script
» Alterar WaterMode do WaterProDaytime Via script
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos