Ajudem pf
5 participantes
Página 1 de 1
Ajudem pf
Alguem sabe como que eu faço um sistema de ligar e desligar meu carro?? e quando estiver desligado ele não acelerar
feeh2106- Membro
- PONTOS : 3108
REPUTAÇÃO : 0
Idade : 22
Respeito as regras :
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Ajudem pf
tipo ativar ou desativar o script??
feeh2106- Membro
- PONTOS : 3108
REPUTAÇÃO : 0
Idade : 22
Respeito as regras :
Re: Ajudem pf
Boa tarde brow! Como nosso amigo Rambo falou, uma simples booleana (verdadeiro ou falso) pode resolver. Por gentileza poste seu script, assim podemos te ajudar melhor.
Abraço!
Abraço!
Re: Ajudem pf
mais e mais ou menos isso faz uma bool ...se ela tiver true ..quando vc apertar w ou qualquer coisa...vc pode andar..se vc apertar f ou qualquer outra tecla que quzer...a bool fica false e ai quando vc aperta w nao pode mais andar...a speed fica = 0... vey..e simples so adciona um booleana...como TODOS AI FALARAMfeeh2106 escreveu:Alguem sabe como que eu faço um sistema de ligar e desligar meu carro?? e quando estiver desligado ele não acelerar
Re: Ajudem pf
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class WC : MonoBehaviour {
public Transform[] Volante;
public Transform[] MeshRodas;
public WheelCollider[] ColisorRodas;
public float torque = 1000, pesoVeiculo = 1500;
private float angulo, direcao;
private Rigidbody corpoRigido;
public Transform steeringWheel;
void Start()
{
corpoRigido = GetComponent<Rigidbody>();
corpoRigido.mass = pesoVeiculo;
}
void Update()
{
direcao = Input.GetAxis("Horizontal");
if (Input.GetAxis("Horizontal") > 0.7f || Input.GetAxis("Horizontal") < -0.7f)
{
angulo = Mathf.Lerp(angulo, direcao, Time.deltaTime * 4);
}
else
{
angulo = Mathf.Lerp(angulo, direcao, Time.deltaTime * 2);
}
Vector3 angle = new Vector3(direcao * 40, 0, 0); // vai rodar em X
steeringWheel.eulerAngles = steeringWheel.eulerAngles + angle * Time.deltaTime;
}
void FixedUpdate()
{
ColisorRodas[0].steerAngle = angulo * 40;
ColisorRodas[1].steerAngle = angulo * 40;
//
ColisorRodas[2].motorTorque = Input.GetAxis("Vertical") * torque;
ColisorRodas[3].motorTorque = Input.GetAxis("Vertical") * torque;
for (int x = 0; x < ColisorRodas.Length; x++)
{
Quaternion quat;
Vector3 pos;
ColisorRodas[x].GetWorldPose(out pos, out quat);
MeshRodas[x].position = pos;
MeshRodas[x].rotation = quat;
}
}
}
feeh2106- Membro
- PONTOS : 3108
REPUTAÇÃO : 0
Idade : 22
Respeito as regras :
Re: Ajudem pf
Vou te Dar uma Dica e não um Script Pronto:
Pronto, é só Tentar Fazer, se não conseguir poste as suas Dúvidas aqui,As Video Aulas do Marcos são Ótimas se não sabe por onde Começar,Depois de Assistir as Video Aulas do Marcos Tenho Certeza que isso aqui será Moleza!!
Valeuu!
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class WC : MonoBehaviour {
public Transform[] Volante;
public Transform[] MeshRodas;
public WheelCollider[] ColisorRodas;
public float torque = 1000, pesoVeiculo = 1500;
private float angulo, direcao;
private Rigidbody corpoRigido;
// AQUI VC CRIA UMA BOLEANA EX: MOTORESTALIGADO
public Transform steeringWheel;
void Start()
{
corpoRigido = GetComponent<Rigidbody>();
corpoRigido.mass = pesoVeiculo;
}
void Update()
{
direcao = Input.GetAxis("Horizontal");
// AQUI VC PODE COLOCAR UM "IF" TAMBEM PRA SE TIVER DESLIGADO O CARRO NEM VIRAR AS RODAS
if (Input.GetAxis("Horizontal") > 0.7f || Input.GetAxis("Horizontal") < -0.7f) // AQUI VC VIRA A RODA
{
angulo = Mathf.Lerp(angulo, direcao, Time.deltaTime * 4);
}
else
{
angulo = Mathf.Lerp(angulo, direcao, Time.deltaTime * 2);
}
Vector3 angle = new Vector3(direcao * 40, 0, 0); // vai rodar em X
steeringWheel.eulerAngles = steeringWheel.eulerAngles + angle * Time.deltaTime;
}
void FixedUpdate()
{
ColisorRodas[0].steerAngle = angulo * 40;
ColisorRodas[1].steerAngle = angulo * 40;
// EU COLOCARIA O "IF" COM A BOLEANA SE O CARRO ESTA LIGADO OU NÃO AQUI
ColisorRodas[2].motorTorque = Input.GetAxis("Vertical") * torque; // AQUI VC ACELERA E FREIA O CARRO
ColisorRodas[3].motorTorque = Input.GetAxis("Vertical") * torque; // AQUI VC ACELERA E FREIA O CARRO
for (int x = 0; x < ColisorRodas.Length; x++)
{
Quaternion quat;
Vector3 pos;
ColisorRodas[x].GetWorldPose(out pos, out quat);
MeshRodas[x].position = pos;
MeshRodas[x].rotation = quat;
}
}
}
Pronto, é só Tentar Fazer, se não conseguir poste as suas Dúvidas aqui,As Video Aulas do Marcos são Ótimas se não sabe por onde Começar,Depois de Assistir as Video Aulas do Marcos Tenho Certeza que isso aqui será Moleza!!
Valeuu!
Re: Ajudem pf
Boa noite!
fee2016, editei seu script aqui pra te ajudar, mas assim como o Andyshow disse, é fácil de fazer e tem muito tutorial que pode te ajudar, e nem sempre você conseguirá scripts prontos, ou melhor, é bom nem querer esses scripts (pois a gente pode acabar nem correndo atrás para entender ele, o que é extremamente necessário), a não ser para aprender em cima e criar os seus, isso gera um enorme aprendizado, mas vamos lá, vou postar ele e dá uma estuda, você verá que a chave booleana que eu criei irá ativar ou desativar as funções do script, se ela não for ativada, nada funciona, ou seja, com a tecla "e" você "liga" o veículo, e com "f" se desliga tudo.
Abraço!
fee2016, editei seu script aqui pra te ajudar, mas assim como o Andyshow disse, é fácil de fazer e tem muito tutorial que pode te ajudar, e nem sempre você conseguirá scripts prontos, ou melhor, é bom nem querer esses scripts (pois a gente pode acabar nem correndo atrás para entender ele, o que é extremamente necessário), a não ser para aprender em cima e criar os seus, isso gera um enorme aprendizado, mas vamos lá, vou postar ele e dá uma estuda, você verá que a chave booleana que eu criei irá ativar ou desativar as funções do script, se ela não for ativada, nada funciona, ou seja, com a tecla "e" você "liga" o veículo, e com "f" se desliga tudo.
Abraço!
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class WC : MonoBehaviour {
public Transform[] Volante;
public Transform[] MeshRodas;
public WheelCollider[] ColisorRodas;
public float torque = 1000, pesoVeiculo = 1500;
private float angulo, direcao;
private Rigidbody corpoRigido;
public bool CarroLigado;
public Transform steeringWheel;
void Start()
{
corpoRigido = GetComponent<Rigidbody>();
corpoRigido.mass = pesoVeiculo;
CarroLigado = false;
}
void Update()
{
if (Input.GetKeyDown (KeyCode.E)) {
CarroLigado = true;
}
if (Input.GetKeyDown (KeyCode.F)) {
CarroLigado = false;
}
if (CarroLigado == true) {
direcao = Input.GetAxis ("Horizontal");
if (Input.GetAxis ("Horizontal") > 0.7f || Input.GetAxis ("Horizontal") < -0.7f) {
angulo = Mathf.Lerp (angulo, direcao, Time.deltaTime * 4);
} else {
angulo = Mathf.Lerp (angulo, direcao, Time.deltaTime * 2);
}
Vector3 angle = new Vector3 (direcao * 40, 0, 0); // vai rodar em X
steeringWheel.eulerAngles = steeringWheel.eulerAngles + angle * Time.deltaTime;
}
}
void FixedUpdate()
{
if (CarroLigado == true) {
ColisorRodas [0].steerAngle = angulo * 40;
ColisorRodas [1].steerAngle = angulo * 40;
//
ColisorRodas [2].motorTorque = Input.GetAxis ("Vertical") * torque;
ColisorRodas [3].motorTorque = Input.GetAxis ("Vertical") * torque;
for (int x = 0; x < ColisorRodas.Length; x++) {
Quaternion quat;
Vector3 pos;
ColisorRodas [x].GetWorldPose (out pos, out quat);
MeshRodas [x].position = pos;
MeshRodas [x].rotation = quat;
}
}
}
}
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos