Sunday, 9 October 2016

Car Movement

using UnityEngine;
using UnityEngine.UI;
using CnControls;
using System.Collections;

public class car : MonoBehaviour {

public Transform centerOfMass;
public Transform steerWheel;

public float steerAngle;
public Camera[] cam;

public GameObject Steerwheel;
public GameObject[] backLights;
public GameObject hands;
public Color color;

public float Cdrag=0.2f;
public float Fdrag;

public int maxTorque ;
public int maxTorqueValue;
public int maxBrakeTorque ;
public float MaxWheelRotateAngle= 14;
public float lowestSpeedAtSteer = 45;
public float lowSpeedSteerAngle = 32;
public float highSpeedSteerAngle = 1;
public float torque;
public float steerWheelAngle;
public float steerWheelRotateFactor=1;
public bool braked;



public WheelCollider WheelFrontRight;
public WheelCollider WheelFrontLeft;
public WheelCollider WheelRearRight;
public WheelCollider WheelRearLeft;
public Text MissionScoreText;
public Text levelSpeedtext;
public static int tempScore1;

public GameObject wheelFR;
public GameObject wheelFL;
public GameObject wheelRR;
public GameObject wheelRL;
public GameObject Gamewin;
public GameObject Pausemenu;
public GameObject Sensormode;
public GameObject Buttonmode;

public float speed;
float oldAngle=0;
float newAngle=0;
float timer=0;
float angleChangeTimer=0;
float steerwheelOffset=0;
int i;
Quaternion rot;
int gMode;
void Awake()
{  //PlayerPrefs.DeleteAll ();

scoresaved = false;
adObj.SetActive (false);

if (PlayerPrefs.GetInt ("Brake") != 0) {
maxBrakeTorque = PlayerPrefs.GetInt ("Brake") + 1;
} else {
maxBrakeTorque = 1;
}


Debug.Log (maxBrakeTorque);
if (InventryManager.Speed2 == 1) {
speed = PlayerPrefs.GetInt ("CarSpeed");
topSpeed = PlayerPrefs.GetInt ("TopSpeed");
} else if (InventryManager.Speed2 == 2) {
speed = PlayerPrefs.GetInt ("CarSpeed");
topSpeed = PlayerPrefs.GetInt ("TopSpeed");
} else if (InventryManager.Speed2 == 3) {
speed = PlayerPrefs.GetInt ("CarSpeed");
topSpeed = PlayerPrefs.GetInt ("TopSpeed");
} else if (InventryManager.Speed2 == 4) {
speed = PlayerPrefs.GetInt ("CarSpeed");
topSpeed = PlayerPrefs.GetInt ("TopSpeed");
} else if (InventryManager.Speed2 == 5) {
speed = PlayerPrefs.GetInt ("CarSpeed");
topSpeed = PlayerPrefs.GetInt ("TopSpeed");
} else {
topSpeed = 60;
}

gMode = PlayerPrefs.GetInt ("CONTROL");
if (gMode == 0) {
Sensormode.SetActive (true);
} else {
Sensormode.SetActive (false);
}
}

void Start () {




maxTorque = maxTorqueValue;

GetComponent<Rigidbody>().centerOfMass = centerOfMass.localPosition;
// color=backLights[0].GetComponent<Renderer>().material.GetColor("_TintColor");
rot=steerWheel.transform.rotation;

hands.SetActive(false);
}


void Update () {

//CameraSwitch();
control();

//steerWheel.transform.localRotation=rot * Quaternion.Euler(new Vector3(0,steerAngle,0));
}

void FixedUpdate () {





HandBrake();

Fdrag=Cdrag*Mathf.Pow(speed,2);

WheelOffset(wheelFL, WheelFrontLeft);
WheelOffset(wheelFR, WheelFrontRight);
WheelOffset(wheelRL, WheelRearLeft);
WheelOffset(wheelRR, WheelRearRight);

//for(int i=0;i<backLights.Length;i++)
// backLights[i].GetComponent<Renderer>().material.SetColor("_TintColor",color);

}

public int topSpeed;
void control (){


torque = maxTorque * (CnInputManager.GetAxis ("Vertical"));

if (CnInputManager.GetAxis ("Vertical") < 0 && speed > 20)
torque = 0;
torque -= Fdrag;

if ((int)speed < topSpeed) {

WheelRearRight.motorTorque = torque;
WheelRearLeft.motorTorque = torque;
WheelFrontRight.motorTorque = torque;
WheelFrontLeft.motorTorque = torque;
} else {
WheelRearRight.motorTorque = 0;
WheelRearLeft.motorTorque = 0;
WheelFrontRight.motorTorque = 0;
WheelFrontLeft.motorTorque = 0;
}
SteerWheelControl ();

}

void LateUpdate()
{

speed=GetComponent<Rigidbody>().velocity.magnitude*3.6f;
if((int)speed < topSpeed - 1 ){
levelSpeedtext.text = "Speed : " +(int)speed;

}else{
levelSpeedtext.text = "Speed : " + topSpeed;
}

if (Input.GetKeyDown(KeyCode.Escape)) {

Time.timeScale = 0;
Pausemenu.SetActive (true);
Buttonmode.SetActive(false);
//Sensormode.SetActive(false);

adObj.SetActive (true);

}

}

void SteerWheelControl(){
if(gMode == 0)
{
//Sensormode.SetActive (true);
if(angleChangeTimer<0){
steerwheelOffset=Random.Range(-0.4f,0.4f)*speed;
angleChangeTimer+=Random.Range(0.2f,1);
}

float speedFactor = (speed/3.6f)/lowestSpeedAtSteer;
float currentSteerAngle = Mathf.Lerp(lowSpeedSteerAngle,highSpeedSteerAngle,speedFactor);
//currentSteerAngle = currentSteerAngle * (float)Input.acceleration.x;

currentSteerAngle *= CnInputManager.GetAxis("Horizontal");

WheelFrontRight.steerAngle = currentSteerAngle;
WheelFrontLeft.steerAngle = currentSteerAngle;

timer+=Time.deltaTime*steerWheelRotateFactor;

newAngle=Mathf.Lerp(oldAngle,(currentSteerAngle*10)+steerwheelOffset, timer);

//steerWheelAngle=currentSteerAngle*10;
steerWheelAngle=newAngle;

steerWheel.transform.localRotation=rot * Quaternion.Euler(new Vector3(0,steerWheelAngle,0));


oldAngle=steerWheelAngle;

if(oldAngle==newAngle)
timer=0;

angleChangeTimer-=Time.deltaTime;
}
else {
//Buttonmode.SetActive (false);
if(angleChangeTimer<0){
steerwheelOffset=Random.Range(-0.4f,0.4f)*speed;
angleChangeTimer+=Random.Range(0.2f,1);
}

float speedFactor = (speed/3.6f)/lowestSpeedAtSteer;
float currentSteerAngle = Mathf.Lerp(lowSpeedSteerAngle,highSpeedSteerAngle,speedFactor);
currentSteerAngle = currentSteerAngle * Input.acceleration.x;

//currentSteerAngle *= CnInputManager.GetAxis("Horizontal");

WheelFrontRight.steerAngle = currentSteerAngle;
WheelFrontLeft.steerAngle = currentSteerAngle;

timer+=Time.deltaTime*steerWheelRotateFactor;

newAngle=Mathf.Lerp(oldAngle,(currentSteerAngle*10)+steerwheelOffset, timer);

//steerWheelAngle=currentSteerAngle*10;
steerWheelAngle=newAngle;
steerWheel.transform.localRotation=rot * Quaternion.Euler(new Vector3(0,steerWheelAngle,0));


oldAngle=steerWheelAngle;

if(oldAngle==newAngle)
timer=0;

angleChangeTimer-=Time.deltaTime;
}
}


void WheelOffset (GameObject model, WheelCollider collider)
{
Quaternion quart;
Vector3 pos;
collider.GetWorldPose(out pos,out quart);
model.transform.position=pos;
model.transform.rotation=quart;
}

public void HandBrake()
{
if (CnInputManager.GetButton ("Jump"))
{
braked = true;
}
else
{
braked = false;
}
if (braked) {
WheelRearLeft.brakeTorque = maxTorqueValue * maxBrakeTorque;
WheelRearRight.brakeTorque = maxTorqueValue * maxBrakeTorque;


WheelFrontLeft.brakeTorque = maxTorqueValue * maxBrakeTorque;
WheelFrontRight.brakeTorque = maxTorqueValue * maxBrakeTorque;
WheelRearRight.motorTorque = 0;
WheelRearLeft.motorTorque = 0;
WheelFrontRight.motorTorque = 0;
WheelFrontLeft.motorTorque = 0;

//gameObject.GetComponent<Rigidbody>().velocity =   - gameObject.GetComponent<Rigidbody>().velocity * Time.smoothDeltaTime;
// gameObject.GetComponent<Rigidbody>().angularVelocity = -Vector3.zero * Time.deltaTime;

color.a = 1f;
} else {
WheelRearLeft.brakeTorque = 0;
WheelRearRight.brakeTorque = 0;
WheelFrontRight.brakeTorque = 0;
WheelFrontLeft.brakeTorque = 0;
color.a = 0.5f;
}
}

bool scoresaved;
public int levelLock;

public GameObject adObj;

void OnTriggerEnter(Collider other)
{


if(scoresaved==false)
{
scoresaved = true;

adObj.SetActive (true);

Gamewin.SetActive (true);
Buttonmode.SetActive (false);

if (other.gameObject.tag == "Goal") {


tempScore1 = PlayerPrefs.GetInt ("Coin");
int tempScore = BoxCount.temp18 * 50;

if (BoxCount.temp18 == BoxCount.temp19) {
int tempScore6 = tempScore + 50;
PlayerPrefs.SetInt ("Coin", tempScore1 + tempScore6);
MissionScoreText.text = "Coin : " + tempScore6;
} else {
PlayerPrefs.SetInt ("Coin", tempScore1 + tempScore);
MissionScoreText.text = "Coin : " + tempScore;
}
//level Lock
if (PlayerPrefs.GetInt ("LevelLock") < levelLock) {
PlayerPrefs.SetInt ("LevelLock", levelLock);
}


Time.timeScale = 0;

}

}

}











//======================================Level Buttons Code ===================================================
public void Retry()
{

Application.LoadLevel (Application.loadedLevel);

}

public string NextLevelName;
public void Nextlevel()
{

Application.LoadLevel (NextLevelName);
}

public void MainMenu()
{

Application.LoadLevel ("Main menu");
}
public void Pause()
{
Time.timeScale = 0;
Pausemenu.SetActive (true);
Buttonmode.SetActive(false);
//Sensormode.SetActive(false);

adObj.SetActive (true);
}
public void Resume()
{
Time.timeScale = 1;
Pausemenu.SetActive (false);
Buttonmode.SetActive(true);

}

public void CameraSwitch(){
//if(Input.GetKeyDown(KeyCode.C)){
cam[i].enabled=false;
cam[i].GetComponent<AudioListener>().enabled=false;
i++;
if(i>=cam.Length)
i=0;
cam[i].enabled=true;
cam[i].GetComponent<AudioListener>().enabled=true;
hands.SetActive(i==1);
}

public void Repswan(){
transform.rotation = Quaternion.Euler (new Vector3 (0, 0, 0));
transform.position = new Vector3(gameObject.transform.position.x,gameObject.transform.position.y+5,gameObject.transform.position.z);

gameObject.GetComponent<Rigidbody>().velocity = Vector3.zero;
gameObject.GetComponent<Rigidbody>().angularVelocity = Vector3.zero;

}


}

No comments:

Post a Comment