BARRINHA PARA REBAIXAR O CARRO!
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
BARRINHA PARA REBAIXAR O CARRO!
como fazer um sistema para quando eu arrastar a barrinha o carro rebaixa?
Gabriel César O- Profissional
- PONTOS : 3989
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: BARRINHA PARA REBAIXAR O CARRO!
Tem que criar uma UI com a barrinha, e programar para a barrinha controlar a Suspensão do Wheel Collider.Gabriel César O escreveu:como fazer um sistema para quando eu arrastar a barrinha o carro rebaixa?
Vou ver se consigo fazer para você aqui
wender- Avançado
- PONTOS : 3591
REPUTAÇÃO : 19
Idade : 26
Áreas de atuação : Modelagem, Programação
Respeito as regras :
Re: BARRINHA PARA REBAIXAR O CARRO!
Olá, boa noite.
Consegui fazer o script só tem que ter um script certo pro carro.
Esse é o script da suspenção de baixar com o slider.
Ai vou deixar o script do carro que eu tava fazendo. essa é a base
I esse é o script que você coloca dentro do carro
Coloca os o script da suspenção e o do carro dentro de um gameObject e coloca o carro dentro dele, ai só configurar as variaveis
Consegui fazer o script só tem que ter um script certo pro carro.
Esse é o script da suspenção de baixar com o slider.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
public class TesteSuspUI : MonoBehaviour {
[Header("Sliders da Suspenção")]
public Slider sliderSusp;
public float distance;
[Header("Colisores das Rodas")]
public CollidersWheels colliders;
public MeshWheels mesh;
[System.Serializable]
public class CollidersWheels
{
public WheelCollider FE;
public WheelCollider FD;
public WheelCollider TE;
public WheelCollider TD;
}
[System.Serializable]
public class MeshWheels
{
public Transform FE;
public Transform FD;
public Transform TE;
public Transform TD;
}
void Start()
{
sliderSusp.value = 0.3f;
}
void Update () {
colliders.FE.suspensionDistance = sliderSusp.value;
colliders.FD.suspensionDistance = sliderSusp.value;
colliders.TE.suspensionDistance = sliderSusp.value;
colliders.TD.suspensionDistance = sliderSusp.value;
}
}
Ai vou deixar o script do carro que eu tava fazendo. essa é a base
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using UnityEngine.UI;
[RequireComponent(typeof(Rigidbody))]
public abstract class CarControllerBase : MonoBehaviour {
public MeshWheelsClass MeshWheels;
public CollidersWheelsClass CollidersWheel;
public DoorsClass Doors;
//Configurações do Carro
[Header("ConfigsOfCar")]
public float Torque;
public float MassOfCar;
public float TopSpeed;
public float CurrentVel;
public float DecelerationSpeed;
public float HandBrakeForce;
public float AngleWheel;
public float VelOfRear;
public Text Vel;
public float currentSpeed;
private float currentSpeedTorque;
private Rigidbody _Rigidbody;
private float currentAngle,currentDir;
//Classes
[System.Serializable]
public class MeshWheelsClass
{
//Mesh Das Rodas
public Transform MeshWheelFE;
public Transform MeshWheelFD;
public Transform MeshWheelTE;
public Transform MeshWheelTD;
}
[System.Serializable]
public class CollidersWheelsClass
{
//Colisores Rodas
public WheelCollider WheelColliderFE;
public WheelCollider WheelColliderFD;
public WheelCollider WheelColliderTE;
public WheelCollider WheelColliderTD;
}
[System.Serializable]
public class DoorsClass
{
//Portas Do Carro
public Transform DoorE;
public Transform DoorD;
}
// Use this for initialization
protected void Start () {
_Rigidbody = GetComponent<Rigidbody>();
_Rigidbody.mass = MassOfCar;
_Rigidbody.centerOfMass += new Vector3(0, -0.3f, -0.3f);
}
// Update is called once per frame
protected void Update () {
currentSpeedTorque = Torque;
currentDir = Input.GetAxis("Horizontal");
if (Input.GetAxis("Horizontal") > 0.7f || Input.GetAxis("Horizontal") < -0.7f)
{
currentAngle = Mathf.Lerp(currentAngle, currentDir, Time.deltaTime * 4);
}
else
currentAngle = Mathf.Lerp(currentAngle, currentDir, Time.deltaTime * 2);
if (Input.GetButtonUp("Vertical"))
{
CollidersWheel.WheelColliderTD.motorTorque = 0;
CollidersWheel.WheelColliderTE.motorTorque = 0;
CollidersWheel.WheelColliderTD.brakeTorque = DecelerationSpeed;
CollidersWheel.WheelColliderTE.brakeTorque = DecelerationSpeed;
}
else if (Input.GetButtonDown("Vertical"))
{
CollidersWheel.WheelColliderTD.motorTorque = currentSpeedTorque;
CollidersWheel.WheelColliderTE.motorTorque = currentSpeedTorque;
CollidersWheel.WheelColliderTD.brakeTorque = 0;
CollidersWheel.WheelColliderTE.brakeTorque = 0;
}
if (Input.GetKey(KeyCode.Space))
{
CollidersWheel.WheelColliderTD.motorTorque = currentSpeedTorque;
CollidersWheel.WheelColliderTE.motorTorque = currentSpeedTorque;
CollidersWheel.WheelColliderTD.brakeTorque = HandBrakeForce;
CollidersWheel.WheelColliderTE.brakeTorque = HandBrakeForce;
}
else if (Input.GetKeyUp(KeyCode.Space))
{
CollidersWheel.WheelColliderTD.motorTorque = currentSpeedTorque;
CollidersWheel.WheelColliderTE.motorTorque = currentSpeedTorque;
CollidersWheel.WheelColliderTD.brakeTorque = 0;
CollidersWheel.WheelColliderTE.brakeTorque = 0;
}
}
protected void FixedUpdate ()
{
currentSpeed = 2 * 22 / 7 * CollidersWheel.WheelColliderTE.radius * CollidersWheel.WheelColliderTE.rpm * 60 / 1000;
currentSpeed = Mathf.Round(currentSpeed);
if(currentSpeed < TopSpeed)
{
CollidersWheel.WheelColliderTD.motorTorque = Input.GetAxis("Vertical") * currentSpeedTorque;
CollidersWheel.WheelColliderTE.motorTorque = Input.GetAxis("Vertical") * currentSpeedTorque;
}else
{
CollidersWheel.WheelColliderTD.motorTorque = 0;
CollidersWheel.WheelColliderTE.motorTorque = 0;
}
CollidersWheel.WheelColliderFD.steerAngle = currentAngle*AngleWheel;
CollidersWheel.WheelColliderFE.steerAngle = currentAngle*AngleWheel;
//Rotação Das Rodas
//Frente
Quaternion RotFL;
Vector3 PosFL;
Quaternion RotFR;
Vector3 PosFR;
CollidersWheel.WheelColliderFE.GetWorldPose(out PosFL, out RotFL);
CollidersWheel.WheelColliderFD.GetWorldPose(out PosFR, out RotFR);
MeshWheels.MeshWheelFE.position = PosFL;
MeshWheels.MeshWheelFE.rotation = RotFL;
MeshWheels.MeshWheelFD.position = PosFR;
MeshWheels.MeshWheelFD.rotation = RotFR;
//Tras
Quaternion RotRL;
Vector3 PosRL;
Quaternion RotRR;
Vector3 PosRR;
CollidersWheel.WheelColliderTE.GetWorldPose(out PosRL, out RotRL);
CollidersWheel.WheelColliderTD.GetWorldPose(out PosRR, out RotRR);
MeshWheels.MeshWheelTE.position = PosRL; //esq
MeshWheels.MeshWheelTE.rotation = RotRL; //esq
MeshWheels.MeshWheelTD.position = PosRR; //dir
MeshWheels.MeshWheelTD.rotation = RotRR; //dir
}
}
I esse é o script que você coloca dentro do carro
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Car : CarControllerBase {
// Use this for initialization
new void Start () {
base.Start();
}
// Update is called once per frame
new void Update () {
base.Update();
}
new void FixedUpdate()
{
base.FixedUpdate();
}
}
Coloca os o script da suspenção e o do carro dentro de um gameObject e coloca o carro dentro dele, ai só configurar as variaveis
wender- Avançado
- PONTOS : 3591
REPUTAÇÃO : 19
Idade : 26
Áreas de atuação : Modelagem, Programação
Respeito as regras :
Re: BARRINHA PARA REBAIXAR O CARRO!
Essa parte do script da suspenção, você pode apagar
[list=linenums]
[*][System.Serializable]
[*] public class MeshWheels
[*] {
[*] public Transform FE;
[*] public Transform FD;
[*] public Transform TE;
[*] public Transform TD;
[*] }
[/list]
Esqueci de excluir, pq era um teste que eu tava fazendo. isso n vai mudar nada no funcionamento dele.
[list=linenums]
[*][System.Serializable]
[*] public class MeshWheels
[*] {
[*] public Transform FE;
[*] public Transform FD;
[*] public Transform TE;
[*] public Transform TD;
[*] }
[/list]
Esqueci de excluir, pq era um teste que eu tava fazendo. isso n vai mudar nada no funcionamento dele.
wender- Avançado
- PONTOS : 3591
REPUTAÇÃO : 19
Idade : 26
Áreas de atuação : Modelagem, Programação
Respeito as regras :
Re: BARRINHA PARA REBAIXAR O CARRO!
nossa! muito obrigado amigo! valeu mesmo! <3Gabriel César O escreveu:como fazer um sistema para quando eu arrastar a barrinha o carro rebaixa?
Gabriel César O- Profissional
- PONTOS : 3989
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
wender- Avançado
- PONTOS : 3591
REPUTAÇÃO : 19
Idade : 26
Áreas de atuação : Modelagem, Programação
Respeito as regras :
Tópicos semelhantes
» BARRINHA PARA REBAIXAR O CARRO!
» !FAZER O CARRO REBAIXAR!
» SISTEMA DE SOM PARA CARRO!
» Nitro para Carro
» FÍSICA DE UM CARRO PARA JOGO EM 2D
» !FAZER O CARRO REBAIXAR!
» SISTEMA DE SOM PARA CARRO!
» Nitro para Carro
» FÍSICA DE UM CARRO PARA JOGO EM 2D
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos