When adding a Collider boat stops turning!

Hey, i’m using this script for my battleships game, but for some reason, when i add a collider to my boat he stop turning! any idea of whats the problem? or where can i find a better script? something more simplier? and by the way couldn’t see in this script why when i push the “w” button he goes back and when a press “s” buttom he goes forward, can someone tell me where can i change it?
This script is kind of big…

Here is the script:
@script RequireComponent (Rigidbody)

var hoverHeight : float = 3;
var hoverHeightStrictness : float = 1.0;
var  forwardThrust : float = 5000.0;
var  backwardThrust : float = 2500.0;
var  bankAmount : float = 0.1;
var  bankSpeed : float = 0.2;
var  bankAxis : Vector3 = new Vector3(-1.0, 0.0, 0.0);
var  turnSpeed : float = 8000.0;

var  forwardDirection : Vector3 = new Vector3(0.0, 0.0, 1.0);

var  mass : float = 5.0;

// positional drag
var sqrdSpeedThresholdForDrag : float = 25.0;
var superDrag : float = 2.0;
var fastDrag : float = 0.5;
var slowDrag : float = 0.01;

// angular drag
var sqrdAngularSpeedThresholdForDrag : float = 5.0;
var superADrag : float = 32.0;
var fastADrag : float = 16.0;
var slowADrag : float = 0.1;



var playerControl : boolean = true;

private var bank : float = 0.0;

function SetPlayerControl(control : boolean)
{
    playerControl = control;
}

function Start()
{
    gameObject.rigidbody.mass = mass;
}

function FixedUpdate()
{
    if (Mathf.Abs(thrust) > 0.01)
    {
        if (rigidbody.velocity.sqrMagnitude > sqrdSpeedThresholdForDrag)
            rigidbody.drag = fastDrag;
        else
            rigidbody.drag = slowDrag;
    }
    else
        rigidbody.drag = superDrag;
                
    if (Mathf.Abs(turn) > 0.01)
    {
        if (rigidbody.angularVelocity.sqrMagnitude > sqrdAngularSpeedThresholdForDrag)
            rigidbody.angularDrag = fastADrag;
        else
            rigidbody.angularDrag = slowADrag;
    }
    else
        rigidbody.angularDrag = superADrag;
    
    transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, hoverHeight, transform.position.z), hoverHeightStrictness);
    
    var amountToBank : float = rigidbody.angularVelocity.y * bankAmount;

    bank = Mathf.Lerp(bank, amountToBank, bankSpeed);
    
    var rotation : Vector3 = transform.rotation.eulerAngles;
    rotation *= Mathf.Deg2Rad;
    rotation.x = 0;
    rotation.z = 0;
    rotation += bankAxis * bank;
    rotation *= Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(rotation);
}

// thrust
private var thrust : float = 0;
private var turn : float = 0;

function Thrust( t : float )
{
    thrust = Mathf.Clamp( t, -1.0, 1.0 );
}

function Turn(t : float)
{
    turn = Mathf.Clamp( t, -1.0, 1.0 ) * turnSpeed;
}

private var thrustGlowOn : boolean = false;

function Update ()
{
    var theThrust : float = thrust;
    
    if (playerControl)
    {
        thrust = Input.GetAxis("Vertical");
        turn = Input.GetAxis("Horizontal") * turnSpeed;
    }
            
    if (thrust > 0.0)
    {
        theThrust *= backwardThrust;
        if (!thrustGlowOn)
        {
            thrustGlowOn = !thrustGlowOn;
            BroadcastMessage("SetThrustGlow", thrustGlowOn, SendMessageOptions.DontRequireReceiver);
        }
    }
    else
    {
        theThrust *= forwardThrust;
        if (thrustGlowOn)
        {
            thrustGlowOn = !thrustGlowOn;
            BroadcastMessage("SetThrustGlow", thrustGlowOn, SendMessageOptions.DontRequireReceiver);
        }
    }
    
    rigidbody.AddRelativeTorque(Vector3.up * turn * Time.deltaTime);
    rigidbody.AddRelativeForce(forwardDirection * theThrust * Time.deltaTime);

}

You’ve mixed physical movement and virtual movement (not sure it’s called that). Said otherwise, you call rigidbody.AddForce / Torque, and you modify transform.position / rotation. You shouldn’t do both, I’d say lose the transform.

about w and s, you’re keyboard is azerty and the input manager defines the axes as qwerty by default. You can change that in Edit → Project Settings → Input Manager.

thanks again, that fixed my problem! :slight_smile: