Hey everybody !
I'm making a racing game but i have a problem, i make a track with blender but my vehicule is always shaking and it overturn...
Some one can help me ?
for wheel colliders i use the properties of the standart asset vehicule (i just changed the radius), my vehicule has a scale of 3 3 3
and this is my vehicule controller (i have only 2 scripts) :
using UnityEngine;
using System.Collections;
using UnityEngine.Networking; //multiplayer
using UnityEngine.UI;
public class PlayerController : NetworkBehaviour {
public GameObject Detector;
public Text lapsText;
public int lapsNumber;
public Camera cam;
// Déclaration des roues
public WheelCollider[] wheelColliders;
// Déclaration des graphismes des roues
public Transform[] wheels;
// Puissance des roues
public float maxTorque = 50;
//Rigidbody rb; pas encore utilisé
void Start () {
lapsNumber = 0;
if (!isLocalPlayer)
{
cam.enabled = false;
}
if (isLocalPlayer)
{
cam.enabled = true;
}
// RigidBody
//rb = GetComponent(); pas encore utilisé
}
void FixedUpdate () {
if (!isLocalPlayer)
return;
// Si ce n'est pas le joueur, ne rien faire
float steer = Input.GetAxis("Horizontal"); // Permet de tourner
float accelerate = Input.GetAxis("Vertical"); // Permet d'avancer ou de reculer
float finalAngle = steer * 45f; // angle des roues avant max (pour tourner)
wheelColliders[0].steerAngle = finalAngle;
wheelColliders[1].steerAngle = finalAngle;
// le << Vertical >> désigne les touches "w" et "s" (WASD) ou les fleches directionelles haut et bas
// le << Horizontal >> désigne les touches "a" et "d" (WASD) ou les fleches directionelles gauche et droite
// application de la puissance
for (int i = 0; i < wheelColliders.Length; i++)
// wheelColliders.Length est le nombre de roues
{
wheelColliders[i].motorTorque = accelerate * maxTorque;
}
// On peut modifier les touches par défaut.
}
void Update()
{
UpdateMeshesPosition();
}
void UpdateMeshesPosition()
{
for(int i = 0; i < wheels.Length; i++)
{
Quaternion quad;
Vector3 pos;
wheelColliders[i].GetWorldPose(out pos, out quad);
// enregistrer la posirtion et la rotation
//applique la position et la rotation sur les graphismes des roues
wheels[i].position = pos;
wheels[i].rotation = new Quaternion(quad.x, quad.y, quad.z, quad.w);
}
}
public void AddLap()
{
lapsNumber = lapsNumber + 1;
lapsText.text = lapsNumber + "";
}
}
Thank you !
bye, xyHeat
↧