[RESOLVIDO] COMBUSTIVEL
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] COMBUSTIVEL
Pessoal estou tentando programar um script de veiculo basico to com um probleminha na parte do combustivel nao sei por onde começo pois ainda estou aprendendo alguem me da uma dica ou um script basico pra eu ter uma noçao? se puder ajudar agradeço muito
Re: [RESOLVIDO] COMBUSTIVEL
Posta o Script, e onde está tendo problema
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] COMBUSTIVEL
Opa, Consegui fazer o basíco aqui agora só não consigo fazer abastecer
pode me ajudar tipo quero que enquanto estiver precionando o botao e fazer o combustivel começar a encher
aqui como ja está
https://imgur.com/96mG2z
https://imgur.com/96mG2zY
https://imgur.com/96mG2zY
pode me ajudar tipo quero que enquanto estiver precionando o botao e fazer o combustivel começar a encher
aqui como ja está
https://imgur.com/96mG2z
https://imgur.com/96mG2zY
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class VeiculoSist : MonoBehaviour {
public bool Partida;
public float combustivel = 1000.0f, velocidade = 0.02f;
public Transform[] Rodas;
public WheelCollider[] RodasCol;
public float torque = 0, Peso = 1000;
private float angulo, direçao;
private Rigidbody corpoRigido;
void Start () {
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.mass = Peso;
}
void Update () {
direçao = Input.GetAxis ("Horizontal");
if (Input.GetAxis ("Horizontal") > 0.7f || Input.GetAxis ("Horizontal") < -0.7f) {
angulo = Mathf.Lerp (angulo, direçao, Time.deltaTime * 4);
} else {
angulo = Mathf.Lerp (angulo, direçao, Time.deltaTime * 2);
}
if (combustivel <= 50) {
torque = 0;
}
if (Input.GetKey (KeyCode.W)){
combustivel -= Time.deltaTime * velocidade;
velocidade = 5;
} else {
combustivel -= Time.deltaTime * velocidade;
velocidade = 0.2f;
}
}
void FixedUpdate(){
RodasCol [0].steerAngle = angulo * 40;
RodasCol [1].steerAngle = angulo * 40;
//
RodasCol [2].motorTorque = Input.GetAxis("Vertical")*torque;
RodasCol [3].motorTorque = Input.GetAxis("Vertical")*torque;
for (int x = 0; x < RodasCol.Length; x++) {
Quaternion quat;
Vector3 pos;
RodasCol [x].GetWorldPose (out pos, out quat);
Rodas [x].position = pos;
Rodas [x].rotation = quat;
}
}
void abastecer (float val){
combustivel += val;
}
}
https://imgur.com/96mG2zY
Re: [RESOLVIDO] COMBUSTIVEL
Script errado desculpeAlerson Software escreveu:Opa, Consegui fazer o basíco aqui agora só não consigo fazer abastecer
pode me ajudar tipo quero que enquanto estiver precionando o botao e fazer o combustivel começar a encher
aqui como ja está
https://imgur.com/96mG2z
https://imgur.com/96mG2zYhttps://imgur.com/96mG2zY
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Rigidbody))]
public class VeiculoSist : MonoBehaviour {
public bool Partida;
public float combustivel = 1000.0f, velocidade = 0.02f;
public Transform[] Rodas;
public WheelCollider[] RodasCol;
public float torque = 0, Peso = 1000;
private float angulo, direçao;
private Rigidbody corpoRigido;
void Start () {
corpoRigido = GetComponent<Rigidbody> ();
corpoRigido.mass = Peso;
}
void Update () {
direçao = Input.GetAxis ("Horizontal");
if (Input.GetAxis ("Horizontal") > 0.7f || Input.GetAxis ("Horizontal") < -0.7f) {
angulo = Mathf.Lerp (angulo, direçao, Time.deltaTime * 4);
} else {
angulo = Mathf.Lerp (angulo, direçao, Time.deltaTime * 2);
}
if (combustivel <= 50) {
torque = 0;
}
if (Input.GetKey (KeyCode.W)){
combustivel -= Time.deltaTime * velocidade;
velocidade = 5;
} else {
combustivel -= Time.deltaTime * velocidade;
velocidade = 0.2f;
}
}
void FixedUpdate(){
RodasCol [0].steerAngle = angulo * 40;
RodasCol [1].steerAngle = angulo * 40;
//
RodasCol [2].motorTorque = Input.GetAxis("Vertical")*torque;
RodasCol [3].motorTorque = Input.GetAxis("Vertical")*torque;
for (int x = 0; x < RodasCol.Length; x++) {
Quaternion quat;
Vector3 pos;
RodasCol [x].GetWorldPose (out pos, out quat);
Rodas [x].position = pos;
Rodas [x].rotation = quat;
}
}
void abastecer (float val){
combustivel += val;
}
}
https://imgur.com/96mG2zY
Re: [RESOLVIDO] COMBUSTIVEL
Não há Nenhuma Condição Que Faça o Combustível Abastecer.
Faça Um Teste, Exemplo:
Coloque Esse Código No Update, apertando 'K' enche o combustível.
#Magnatah
Faça Um Teste, Exemplo:
Coloque Esse Código No Update, apertando 'K' enche o combustível.
- Código:
if (Input.GetKeyDown(KeyCode.K))
{
abastecer(5);
}
#Magnatah
Última edição por Magnatah em Ter Jul 16, 2019 4:32 pm, editado 1 vez(es)
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] COMBUSTIVEL
Pronto abasteceu, agora eu queria que essa funçao so abastecesse quando eu tivesse em um determinado local tipo um posto de combustivel
como faço?
como faço?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[RequireComponent(typeof(Rigidbody))]
public class VehicleControllerMSACC : MonoBehaviour {
public WheelCollider rightFrontWheelCollider;
public Transform rightFrontWheelMesh;
[Space(5)]
public WheelCollider leftFrontWheelCollider;
public Transform leftFrontWheelMesh;
[Space(5)]
public WheelCollider rightRearWheelCollider;
public Transform rightRearWheelMesh;
[Space(5)]
public WheelCollider leftRearWheelCollider;
public Transform leftRearWheelMesh;
[Space(30)][Range(0.0f,1.5f)]
public float torqueForceWheel = 1.0f;
public Transform centerOfMass;
public Slider barraDeCombustivel;
public float CombustivelMax = 100.0f;
Rigidbody rb;
float motorTorque = 0.0f;
float brakeTorque = 0.0f;
float KMh;
float angle = 0.0f;
float direction = 0.0f;
bool handBrake;
void Start () {
barraDeCombustivel.minValue = 0;
barraDeCombustivel.maxValue = CombustivelMax;
barraDeCombustivel.value = CombustivelMax;
rb = GetComponent<Rigidbody> ();
if (rb.mass < 1000.0f) {
rb.mass = 1000.0f;
}
rb.interpolation = RigidbodyInterpolation.Interpolate;
rb.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
if (centerOfMass != null) {
rb.centerOfMass = transform.InverseTransformPoint(centerOfMass.position);
} else {
rb.centerOfMass = Vector3.zero;
}
if (rightFrontWheelCollider != null && leftFrontWheelCollider != null && rightRearWheelCollider != null && leftRearWheelCollider != null) {
WheelCollider ColisoresDasRodas = GetComponentInChildren<WheelCollider>();
ColisoresDasRodas.ConfigureVehicleSubsteps(1000.0f, 20, 20);
}
}
void Update () {
if (Input.GetKey(KeyCode.KeypadEnter)){
CombustivelMax = 1.0f;
}
if (barraDeCombustivel.value >= CombustivelMax) {
barraDeCombustivel.value = CombustivelMax;
}
if (barraDeCombustivel.value <= 0) {
barraDeCombustivel.value = 0;
}
if (CombustivelMax <= 0) {
CombustivelMax = 0;
}
if (CombustivelMax >= 100.0f) {
CombustivelMax = 100.0f;
}
if (CombustivelMax >= 0) {
torqueForceWheel = 1;
}
if (Input.GetKey(KeyCode.W)){
CombustivelMax -= Time.deltaTime * rb.drag;
barraDeCombustivel.value -= Time.deltaTime * rb.drag;
}
if (CombustivelMax <= 0.0f) {
torqueForceWheel = 0;
}
KMh = rb.velocity.magnitude * 3.6f;
rb.drag = Mathf.Clamp ((KMh / 250.0f) * 0.075f, 0.001f, 0.075f);
direction = Input.GetAxis ("Horizontal");
if (Mathf.Abs (direction) > 0.7f) {
angle = Mathf.Lerp (angle, direction, Time.deltaTime * 4);
} else {
angle = Mathf.Lerp (angle, direction, Time.deltaTime * 2);
}
if (Mathf.Abs (Input.GetAxis("Vertical")) < 0.1f) {
motorTorque = 0.0f;
brakeTorque = Mathf.Lerp (brakeTorque, rb.mass, Time.deltaTime * 2.0f);
} else {
motorTorque = Mathf.Lerp (motorTorque, Input.GetAxis ("Vertical") * rb.mass * torqueForceWheel, Time.deltaTime);
brakeTorque = 0.0f;
}
if (Input.GetKeyDown (KeyCode.Space)) {
handBrake = true;
} else {
handBrake = false;
}
if (handBrake) {
brakeTorque = float.MaxValue;
motorTorque = 0.0f;
}
if (rightFrontWheelCollider != null && leftFrontWheelCollider != null && rightRearWheelCollider != null && leftRearWheelCollider != null) {
ApplyTorque (motorTorque);
ApplyBrakes (brakeTorque);
}
}
void FixedUpdate(){
if (rightFrontWheelCollider != null && leftFrontWheelCollider != null && rightRearWheelCollider != null && leftRearWheelCollider != null) {
DownForce ();
StabilizeVehicle ();
MeshUpdate ();
}
if (Mathf.Abs (direction) < 0.9f) {
Vector3 vel = new Vector3 (rb.angularVelocity.x, 0.0f, rb.angularVelocity.z);
rb.angularVelocity = Vector3.Lerp (rb.angularVelocity, vel, Time.deltaTime * 2.0f);
}
}
void MeshUpdate(){
rightFrontWheelCollider.steerAngle = angle * 30;
leftFrontWheelCollider.steerAngle = angle * 30;
WheelMeshUpdate (rightFrontWheelCollider, rightFrontWheelMesh);
WheelMeshUpdate (leftFrontWheelCollider, leftFrontWheelMesh);
WheelMeshUpdate (rightRearWheelCollider, rightRearWheelMesh);
WheelMeshUpdate (leftRearWheelCollider, leftRearWheelMesh);
}
void WheelMeshUpdate(WheelCollider collider, Transform wheelMesh){
Quaternion quat;
Vector3 pos;
collider.GetWorldPose (out pos, out quat);
wheelMesh.position = pos;
wheelMesh.rotation = quat;
}
void DownForce(){
bool ground1 = rightFrontWheelCollider.isGrounded;
bool ground2 = leftFrontWheelCollider.isGrounded;
bool ground3 = rightRearWheelCollider.isGrounded;
bool ground4 = leftRearWheelCollider.isGrounded;
if ((ground1 && ground2) || (ground3 && ground4)) {
float ajusteInclinacao = Mathf.Clamp(Mathf.Abs(Vector3.Dot (Vector3.up, transform.up)),0.3f,1.0f);
rb.AddForce (-transform.up * (rb.mass*2.0f*ajusteInclinacao + (0.8f * ajusteInclinacao * Mathf.Abs(KMh*3.0f) * (rb.mass/125.0f))));
}
}
void StabilizeVehicle(){
float forceFrontLeft = 1.0f;
float forceFrontRight = 1.0f;
float forceReadLeft = 1.0f;
float forceReadRight = 1.0f;
WheelHit hit;
bool isGround1 = leftRearWheelCollider.GetGroundHit(out hit);
if (isGround1) {
forceReadLeft = (-leftRearWheelCollider.transform.InverseTransformPoint (hit.point).y - leftRearWheelCollider.radius) / leftRearWheelCollider.suspensionDistance;
}
bool isGround2 = rightRearWheelCollider.GetGroundHit(out hit);
if (isGround2) {
forceReadRight = (-rightRearWheelCollider.transform.InverseTransformPoint (hit.point).y - rightRearWheelCollider.radius) / rightRearWheelCollider.suspensionDistance;
}
bool isGround3 = leftFrontWheelCollider.GetGroundHit(out hit);
if (isGround3) {
forceFrontLeft = (-leftFrontWheelCollider.transform.InverseTransformPoint (hit.point).y - leftFrontWheelCollider.radius) / leftFrontWheelCollider.suspensionDistance;
}
bool isGround4 = rightFrontWheelCollider.GetGroundHit(out hit);
if (isGround4) {
forceFrontRight = (-rightFrontWheelCollider.transform.InverseTransformPoint (hit.point).y - rightFrontWheelCollider.radius) / rightFrontWheelCollider.suspensionDistance;
}
float tiltAjustment = Mathf.Clamp(Mathf.Abs(Vector3.Dot (Vector3.up, transform.up)),0.3f,1.0f);
float antiRollForce1 = (forceReadLeft - forceReadRight) * rb.mass * tiltAjustment;
float antiRollForce2 = (forceFrontLeft - forceFrontRight) * rb.mass * tiltAjustment;
if (isGround1) {
rb.AddForceAtPosition (leftRearWheelCollider.transform.up * -antiRollForce1, leftRearWheelCollider.transform.position);
}
if (isGround2) {
rb.AddForceAtPosition (rightRearWheelCollider.transform.up * antiRollForce1, rightRearWheelCollider.transform.position);
}
if (isGround3) {
rb.AddForceAtPosition (leftFrontWheelCollider.transform.up * -antiRollForce2, leftFrontWheelCollider.transform.position);
}
if (isGround4) {
rb.AddForceAtPosition (rightFrontWheelCollider.transform.up * antiRollForce2, rightFrontWheelCollider.transform.position);
}
}
void ApplyTorque(float torqueForce){
rightFrontWheelCollider.motorTorque = torqueForce;
leftFrontWheelCollider.motorTorque = torqueForce;
rightRearWheelCollider.motorTorque = torqueForce;
leftRearWheelCollider.motorTorque = torqueForce;
}
void ApplyBrakes(float brakeForce){
rightFrontWheelCollider.brakeTorque = brakeForce;
leftFrontWheelCollider.brakeTorque = brakeForce;
rightRearWheelCollider.brakeTorque = brakeForce;
leftRearWheelCollider.brakeTorque = brakeForce;
}
}
Re: [RESOLVIDO] COMBUSTIVEL
Usa um Vector3.Distance(Sua Posição, Posição do Alvo).
Ou Um OnTriggeEnter().
OnTriggerEnter: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html
Vector3.Distance: https://docs.unity3d.com/ScriptReference/Vector3.Distance.html
#Magnatah
Ou Um OnTriggeEnter().
OnTriggerEnter: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html
Vector3.Distance: https://docs.unity3d.com/ScriptReference/Vector3.Distance.html
#Magnatah
Última edição por Magnatah em Ter Jul 16, 2019 4:31 pm, editado 1 vez(es)
Magnatah- Instrutor
- PONTOS : 3548
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Re: [RESOLVIDO] COMBUSTIVEL
usei o OnTriggerEnter aqui no forum tem varios tutoriais varias dicas de como usa-los eu conclui meu sistema de combustivel obrigado cara ajudou mt emMagnatah escreveu:Usa um Vector3.Distance(Sua Posição, Posição do Alvo).
Ou Um OnTriggeEnter().
OnTriggerEnter: https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html
Vector3.Distance: https://docs.unity3d.com/ScriptReference/Vector3.Distance.html
#Magnatah
Tópicos semelhantes
» Sistema de combustível,dinheiro
» [RESOLVIDO] De me uma luz
» [TUTORIAL]Sistema Basico de Combustivel (PC e Android)
» Sistema de Combustível,Dinheiro,Multa,Bateria,Entregas,Entrar e Sair do Veículo,Piscas,Marchas Manual e Defeitos no Veículo!
» [RESOLVIDO] Fps em C#
» [RESOLVIDO] De me uma luz
» [TUTORIAL]Sistema Basico de Combustivel (PC e Android)
» Sistema de Combustível,Dinheiro,Multa,Bateria,Entregas,Entrar e Sair do Veículo,Piscas,Marchas Manual e Defeitos no Veículo!
» [RESOLVIDO] Fps em C#
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos