Script de Instanciar Cenario
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Script de Instanciar Cenario
Alguem pdoeria me ajudar esta dando error na linha 13.
Queria saber se a logica esta correta e tipo um cenario infinito quando ele colide com o objeto ele instancia outra parte do cenario na frente e exclui o de tras:
Queria saber se a logica esta correta e tipo um cenario infinito quando ele colide com o objeto ele instancia outra parte do cenario na frente e exclui o de tras:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public Transform BlocoCenario;
public bool Jogar = false;
// Use this for initialization
void Start () {
if (Jogar == true) {
transform.position.z = transform.position.z + 31 * 2;
}
}
void OnTriggerEnter (Collider other){
if (other.gameObject.tag == "Player") {
Instantiate (BlocoCenario, transform.position, transform.rotation);
Destroy (gameObject);
}
}
}
Re: Script de Instanciar Cenario
bruxamissi escreveu:Alguem pdoeria me ajudar esta dando error na linha 13.
Queria saber se a logica esta correta e tipo um cenario infinito quando ele colide com o objeto ele instancia outra parte do cenario na frente e exclui o de tras:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeradordeLevel : MonoBehaviour {
public Transform BlocoCenario;
public bool Jogar = false;
// Use this for initialization
void Start () {
if (Jogar == true) {
transform.position.z = transform.position.z + 31 * 2;
}
}
void OnTriggerEnter (Collider other){
if (other.gameObject.tag == "Player") {
Instantiate (BlocoCenario, transform.position, transform.rotation);
Destroy (gameObject);
}
}
}
O erro que da na linha 13 é porque não pode usar o "+" em vector...
- Código:
// No caso para mover um objeto em um certo eixo é recomendado usar o Forward,Right ou o Up;
transform.position = transform.forward * 2;
// Mas não pode se utilizar o "+"
Re: Script de Instanciar Cenario
na verdade o erro é por que você está tentando passar um float em um parâmetro que só aceita Vector3
você não pode dizer isto:
transform.position.z = 1;
você tem que setar um transform.position inteiro, e apenas não mexer nos outros eixos, exemplo:
transform.position = new Vector3(transform.position.x, transform.position.y, 1);
desta maneira eu setei 1 para o eixo Z e não alterei o valor dos outros eixos.
você não pode dizer isto:
transform.position.z = 1;
você tem que setar um transform.position inteiro, e apenas não mexer nos outros eixos, exemplo:
transform.position = new Vector3(transform.position.x, transform.position.y, 1);
desta maneira eu setei 1 para o eixo Z e não alterei o valor dos outros eixos.
Re: Script de Instanciar Cenario
MarcosSchultz escreveu:na verdade o erro é por que você está tentando passar um float em um parâmetro que só aceita Vector3
você não pode dizer isto:
transform.position.z = 1;
você tem que setar um transform.position inteiro, e apenas não mexer nos outros eixos, exemplo:
transform.position = new Vector3(transform.position.x, transform.position.y, 1);
desta maneira eu setei 1 para o eixo Z e não alterei o valor dos outros eixos.
Isso é especifico de C# se não me engano, em javascript é possível utilizar "transform.position.z". E isso acontece porque "transform.position.z" é uma copia, ou seja não faria sentido alterá-la, até porque ela é destruída. Ao fazer isso "transform.position.z = 1" você está alterando o valor da copia e não o valor real do transform.
Re: Script de Instanciar Cenario
dipode escreveu:MarcosSchultz escreveu:na verdade o erro é por que você está tentando passar um float em um parâmetro que só aceita Vector3
você não pode dizer isto:
transform.position.z = 1;
você tem que setar um transform.position inteiro, e apenas não mexer nos outros eixos, exemplo:
transform.position = new Vector3(transform.position.x, transform.position.y, 1);
desta maneira eu setei 1 para o eixo Z e não alterei o valor dos outros eixos.
Isso é especifico de C# se não me engano, em javascript é possível utilizar "transform.position.z". E isso acontece porque "transform.position.z" é uma copia, ou seja não faria sentido alterá-la, até porque ela é destruída. Ao fazer isso "transform.position.z = 1" você está alterando o valor da copia e não o valor real do transform.
Perfeito, explicou melhor que eu :D
Re: Script de Instanciar Cenario
Script de Instanciar ta pronto, mais ele nao esta instanciando apenas um quando acontece o collider pq??
E isso esta dando lag pq é mt!
Script:
Olha como ele esta instanciando:
E isso esta dando lag pq é mt!
Script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GeradordeLevel : MonoBehaviour {
public GameObject Objetos;
void Start () {
}
void OnTriggerEnter (Collider other){
if (other.gameObject.tag == "Player") {
GameObject o = Instantiate (Objetos);
float random = Random.Range (-1, 1);
if (random == -1) {
o.transform.localPosition = new Vector3 (transform.position.x - 3, transform.position.y, transform.position.z + 3);
}
if (random == 0) {
o.transform.localPosition = new Vector3 (transform.position.x, transform.position.y, transform.position.z + 7);
}
if (random == 1) {
o.transform.localPosition = new Vector3 (transform.position.x + 3, transform.position.y, transform.position.z + 3);
}
}
}
}
Olha como ele esta instanciando:
Re: Script de Instanciar Cenario
bruxamissi escreveu:Script de Instanciar ta pronto, mais ele nao esta instanciando apenas um quando acontece o collider pq??
E isso esta dando lag pq é mt!
Script:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GeradordeLevel : MonoBehaviour {
public GameObject Objetos;
void Start () {
}
void OnTriggerEnter (Collider other){
if (other.gameObject.tag == "Player") {
GameObject o = Instantiate (Objetos);
float random = Random.Range (-1, 1);
if (random == -1) {
o.transform.localPosition = new Vector3 (transform.position.x - 3, transform.position.y, transform.position.z + 3);
}
if (random == 0) {
o.transform.localPosition = new Vector3 (transform.position.x, transform.position.y, transform.position.z + 7);
}
if (random == 1) {
o.transform.localPosition = new Vector3 (transform.position.x + 3, transform.position.y, transform.position.z + 3);
}
}
}
}
Olha como ele esta instanciando:
Provavelmente porque você pode estar andando com o Player e colidindo novamente, algo assim; pois "OnTriggerEnter" só acontece uma vez quando entra no trigger, o que pode ser também, é você está instanciando o trigger e ele está grande demais e pegando no player, assim instanciando outro e outro e outro.
Re: Script de Instanciar Cenario
Resolvi o problema eu falei para quando ele colidir ele desativar o Box collider.
O Script ficou assim.
Muito Obrigado a todos pela a ajudaa!!
O Script ficou assim.
Muito Obrigado a todos pela a ajudaa!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GeradordeLevel : MonoBehaviour {
public GameObject Objetos;
void Start () {
}
void OnTriggerEnter (Collider other){
if (other.gameObject.tag == "Player") {
GameObject o = Instantiate (Objetos);
float random = Random.Range (-1, 1);
if (random == -1) {
o.transform.localPosition = new Vector3 (transform.position.x - 3, transform.position.y, transform.position.z + 3);
}
if (random == 0) {
o.transform.localPosition = new Vector3 (transform.position.x, transform.position.y, transform.position.z + 7);
}
if (random == 1) {
o.transform.localPosition = new Vector3 (transform.position.x + 3, transform.position.y, transform.position.z + 3);
}
GetComponent<BoxCollider> ().enabled = false;
}
}
}
Tópicos semelhantes
» Cenário se reposicionar no eixo z, quando o player se move pelo cenário.
» Cenário
» Avaliem (Meu cenário)!!
» Interação com cenário
» Salvar cenario
» Cenário
» Avaliem (Meu cenário)!!
» Interação com cenário
» Salvar cenario
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos