Hi everyone,
I have trouble combining two scripts for iPhone controls. I have script for GUI texture that represents gas pedal, and a script for vehicle control. Realy don’t know what to do… I would appreciate any help. Thanks!!!
This is my Gui script
function Update() {
if(Input.touchCount > 0){
var touch : Touch = Input.touches[0];
if(touch.phase == TouchPhase.Began guiTexture.HitTest(touch.position) )
{
//Something should go here when combinig...But don't know what. I tried sooo many things!
}
}
}
And this is the vehicle script. This script works ok when i control the vehicle from keyboard. Also, gui button registers touch when i try it on iphone. But it seems i realy don’t know how to combine them. I made another var for GUITexture when i tried to put them together, but it doesn’t work. If anyone can help me, please!!!
var FrontLeftWheel : WheelCollider;
var FrontRightWheel : WheelCollider;
var GearRatio : float[];
var CurrentGear : int = 0;
var EngineTorque : float = 600.0;
var MaxEngineRPM : float = 3000.0;
var MinEngineRPM : float = 1000.0;
private var EngineRPM : float = 0.0;
function Start () {
rigidbody.centerOfMass.y = -2;
}
function Update () {
EngineRPM = (FrontLeftWheel.rpm + FrontRightWheel.rpm) /2 * GearRatio[CurrentGear];
ShiftGears();
FrontLeftWheel.motorTorque = EngineTorque / GearRatio[CurrentGear] * Input.GetAxis ("Vertical");
FrontRightWheel.motorTorque = EngineTorque / GearRatio[CurrentGear] * Input.GetAxis ("Vertical");
}
function ShiftGears() {
if ( EngineRPM >= MaxEngineRPM ) {
var AppropriateGear : int = CurrentGear;
for ( var i = 0; i < GearRatio.length - 1; i ++ ) {
if ( FrontLeftWheel.rpm * GearRatio[i] < MaxEngineRPM ) {
AppropriateGear = i;
break;
}
}
CurrentGear = AppropriateGear;
}
if ( EngineRPM <= MinEngineRPM ) {
AppropriateGear = CurrentGear;
for ( var j = GearRatio.length-1; j >= 0; j -- ) {
if ( FrontLeftWheel.rpm * GearRatio[j] > MinEngineRPM ) {
AppropriateGear = j;
break;
}
}
CurrentGear = AppropriateGear;
}
}
Thanks!
Solved this!
If anyone needs it, i will post it!
if it wont be killing some time of yours, i would really appreciate to see the code, thanks
regards,
Dev
Yes, I’m very interested as well. I need to implement a gas pedal on the screen overlayed while I am driving.
This is whole script and it works great. I know it’s a little complicated, but it’s worth it!
i just have one question… I want my steering wheel to be Texture2D (OnGUI), and my gas and brake pedals are GUITextures. I can’t seem to enable multitouch, does anyone know why?
var FrontLeftWheel : WheelCollider;
var FrontRightWheel : WheelCollider;
var GearRatio : float[];
var CurrentGear : int = 0;
var EngineTorque : float = 600.0;
var MaxEngineRPM : float = 3000.0;
var MinEngineRPM : float = 1000.0;
private var EngineRPM : float = 0.0;
var motorInputTouch : int = 0;
var motorInput : float = 0.00;
var g_gas : GUITexture;
var g_brake : GUITexture;
function Start () {
rigidbody.centerOfMass.y = -2;
g_gas.enabled = true;
g_brake.enabled = true;
}
function Update() {
for (var i = 0; i < Input.touchCount; ++i) {
if (Input.GetTouch(i).phase == TouchPhase.Began) {
motorInputTouch = 1;
}
else if (Input.GetTouch(i).phase == TouchPhase.Ended) {
motorInputTouch = 0;
}
}
rigidbody.drag = rigidbody.velocity.magnitude / 200;
EngineRPM = (FrontLeftWheel.rpm + FrontRightWheel.rpm) /2 * GearRatio[CurrentGear];
motorInput = motorInputTouch;
for (var touch : Touch in Input.touches)
{
if (touch.phase == TouchPhase.Stationary g_gas.HitTest(touch.position)){
motorInputTouch = 1;
}
else if(touch.phase == TouchPhase.Ended g_gas.HitTest){
motorInputTouch = 0;
}
if (touch.phase == TouchPhase.Stationary g_brake.HitTest(touch.position)){
motorInputTouch = -1;
}
else if(touch.phase == TouchPhase.Ended g_brake.HitTest){
motorInputTouch = 0;
}
}
ShiftGears();
FrontLeftWheel.motorTorque = EngineTorque / GearRatio[CurrentGear] * motorInputTouch;
FrontRightWheel.motorTorque = EngineTorque / GearRatio[CurrentGear] * motorInputTouch;
function ShiftGears() {
if ( EngineRPM >= MaxEngineRPM ) {
var AppropriateGear : int = CurrentGear;
for ( var i = 0; i < GearRatio.length - 1; i ++ ) {
if ( FrontLeftWheel.rpm * GearRatio[i] < MaxEngineRPM ) {
AppropriateGear = i;
break;
}
}
CurrentGear = AppropriateGear;
}
if ( EngineRPM <= MinEngineRPM ) {
AppropriateGear = CurrentGear;
for ( var j = GearRatio.length-1; j >= 0; j -- ) {
if ( FrontLeftWheel.rpm * GearRatio[j] > MinEngineRPM ) {
AppropriateGear = j;
break;
}
}
CurrentGear = AppropriateGear;
}
}