Sunday, 9 October 2016

Timer Clock

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

public class Timer : MonoBehaviour {

public float startTime;
public float staTime;
public static double timeRemaining;
public Text MissionTimeText;
public GameObject Gameover;
public GameObject Playing;


void Start()
{
Time.timeScale = 1;
staTime = startTime;
}

void LateUpdate()
{
Countdown();
staTime -= Time.deltaTime;
}

void Countdown(){

timeRemaining = staTime;
ShowTime();

if (timeRemaining < 0 || BoxCount.temp18 == 0) {
timeRemaining = 0;
Gameover.SetActive (true);
Playing.SetActive (false);
Start();
Time.timeScale = 0;

}
}

void ShowTime(){
int hour;
int minutes;
int seconds;
string timeString;
hour = (int)timeRemaining / 3600;
minutes = (int)timeRemaining/60;

seconds = (int)timeRemaining%60;
timeString = hour.ToString() + ":" + minutes.ToString() + ":" + seconds.ToString();
MissionTimeText.text = "Time : " + timeString;
}



}

TiltWindow

using UnityEngine;

public class TiltWindow : MonoBehaviour
{
public Vector2 range = new Vector2(5f, 3f);

Transform mTrans;
Quaternion mStart;
Vector2 mRot = Vector2.zero;

void Start ()
{
mTrans = transform;
mStart = mTrans.localRotation;
}

void Update ()
{
Vector3 pos = Input.mousePosition;

float halfWidth = Screen.width * 0.5f;
float halfHeight = Screen.height * 0.5f;
float x = Mathf.Clamp((pos.x - halfWidth) / halfWidth, -1f, 1f);
float y = Mathf.Clamp((pos.y - halfHeight) / halfHeight, -1f, 1f);
mRot = Vector2.Lerp(mRot, new Vector2(x, y), Time.deltaTime * 5f);

mTrans.localRotation = mStart * Quaternion.Euler(-mRot.y * range.y, mRot.x * range.x, 0f);
}
}

Smooth Camera in 3D

using UnityEngine;
using System.Collections;

public class SmoothFollow2 : MonoBehaviour {



public Transform car;
public float distance               = 8.0f;
public float rayCastdistance               = 1.0f;
public float height                 = 2.5f;
public float rotationDampening      = 3.0f;
public float heightDampening        = 2.0f;
public float zoomRatio              = 20.0f;
public float defaultFOV             = 60.0f;
private Vector3 rotationVector;

private LayerMask raycastLayers = -1;
public LayerMask ignoreLayers = -1;
private RaycastHit hit = new RaycastHit();
bool canMove;
// Use this for initialization
void Start ()
{
raycastLayers = ~ignoreLayers;
}
// Update is called once per frame
void LateUpdate ()
{




float wantedAngle = rotationVector.y;
float wantedHeight = car.position.y + height;
float myAngle = transform.eulerAngles.y;
float myHeight = transform.position.y;
myAngle = Mathf.LerpAngle(myAngle, wantedAngle, rotationDampening * Time.deltaTime);
myHeight = Mathf.Lerp(myHeight, wantedHeight, heightDampening * Time.deltaTime);


Quaternion currentRotation = Quaternion.Euler(0, myAngle, myAngle);

/* if (Physics.Raycast (transform.position, transform.eulerAngles, out hit, 2f, raycastLayers)) {

transform.position = car.position;
//transform.position = car.position;
transform.position -= currentRotation * Vector3.forward*distance;
gameObject.transform.position = new Vector3(transform.position.x-3, myHeight+4, transform.position.z);
transform.LookAt(car);

} else {
transform.position = car.position;
//transform.position = car.position;
transform.position -= currentRotation * Vector3.forward*distance;
gameObject.transform.position = new Vector3(transform.position.x, myHeight, transform.position.z);
transform.LookAt(car);
}*/
//car.position = hit.point + hit.normal;



Vector3 up = transform.TransformDirection(Vector3.up);
// RaycastHit hit;
Debug.DrawRay(transform.position, -up * 1, Color.green);

/*if (Physics.Raycast (transform.position, -up, out hit, rayCastdistance)) {
Debug.Log ("Hit");
if (hit.collider.gameObject.tag == "Maps") {
Debug.Log ("ma");
transform.position = car.position;
//transform.position = car.position;
transform.position -= currentRotation * Vector3.forward * distance;
gameObject.transform.position = new Vector3 (transform.position.x,  myHeight+20*Time.smoothDeltaTime, transform.position.z);
transform.LookAt (car);
}
} else {*/
transform.position = car.position;
//transform.position = car.position;
transform.position -= currentRotation * Vector3.forward * distance;
gameObject.transform.position = new Vector3 (transform.position.x, myHeight, transform.position.z);
transform.LookAt (car);
// }


}  
void FixedUpdate()
{
Vector3 localVelocity = car.InverseTransformDirection(car.GetComponent<Rigidbody>().velocity);
if(localVelocity.z < -1.0f)
{
rotationVector.y = car.eulerAngles.y + 180;
}
else
{
rotationVector.y = car.eulerAngles.y;
}
float acceleration = car.GetComponent<Rigidbody>().velocity.magnitude;
GetComponent<Camera>().fieldOfView = defaultFOV + acceleration*zoomRatio*Time.deltaTime;
}

}

Bumper in Car

using UnityEngine;
using CnControls;
using System.Collections;

public class skidMarks : MonoBehaviour {
public AudioClip skidSound;
AudioSource skidAudio = null;

public AudioClip bumpSound;
AudioSource bumpAudio = null;
public float bumpMinForce = 4000;
public float bumpMaxForse = 18000;
float bumpMinVolume = 0.2f;
float bumpMaxVolume = 0.6f;

public car car1;

public float minToSlip=150;
public bool rear;
public float skidAt=5.5f;
public float markWidth=0.2f;
public Material skidMaterial;
public GameObject skidSmoke;
public float currentfrictionValue;
int skidding;
Vector3[] lastPos=new Vector3[2];
WheelHit hit;

float force;
float stress;

void Start () {
skidAudio = gameObject.AddComponent<AudioSource>();
skidAudio.loop = true;
skidAudio.clip = skidSound;
skidAudio.volume = 0.25f;
skidAudio.spatialBlend=0.8f;

bumpAudio = gameObject.AddComponent<AudioSource>();
bumpAudio.loop = false;
bumpAudio.clip = bumpSound;
bumpAudio.spatialBlend=0.8f;

}


void FixedUpdate () {
transform.GetComponent<WheelCollider>().GetGroundHit(out hit);
currentfrictionValue=Mathf.Abs(hit.sidewaysSlip);

stress=force-hit.force;
force=hit.force;

BumpPlay (stress);

float rpm = transform.GetComponent<WheelCollider>().rpm;

if((skidAt<= currentfrictionValue) || (rpm<minToSlip && Input.GetAxis("Vertical")>0&& rear) && hit.collider ){
SkidMesh();
if(!skidAudio.isPlaying)
skidAudio.Play();
}
else{
skidding=0;
skidSmoke.GetComponent<ParticleSystem>().enableEmission=false;
skidAudio.Stop();
}
if(transform.GetComponentInParent<Rigidbody>().velocity.magnitude>5){
skidSmoke.GetComponent<ParticleSystem>().enableEmission=true;
}
else{
skidSmoke.GetComponent<ParticleSystem>().enableEmission=false;
}
}

void SkidMesh(){

GameObject mark=new GameObject("Mark");
MeshFilter filter = mark.AddComponent<MeshFilter>();
mark.AddComponent<MeshRenderer>();
Mesh markMesh=new Mesh();
Vector3[] vertices=new Vector3[4];
int[] triangles=new int[6];
if(skidding==0){

vertices[0]=hit.point + Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z)*new Vector3(markWidth,0.01f,0);
vertices[0]=hit.point + Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z)*new Vector3(-markWidth,0.01f,0);
vertices[2]=hit.point + Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z)*new Vector3(-markWidth,0.01f,0);
vertices[3]=hit.point +Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z)*new Vector3(markWidth,0.01f,0);
lastPos[0]=vertices[2];
lastPos[1]=vertices[3];
skidding=1;
}
else{
vertices[1]=lastPos[0];
vertices[0]=lastPos[1];
vertices[2]=hit.point + Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z)*new Vector3(-markWidth,0.01f,0);
vertices[3]=hit.point +Quaternion.Euler(transform.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z)*new Vector3(markWidth,0.01f,0);
lastPos[0]=vertices[2];
lastPos[1]=vertices[3];
}

triangles[0]=0;
triangles[1]=1;
triangles[2]=2;
triangles[3]=2;
triangles[4]=3;
triangles[5]=0;
markMesh.vertices=vertices;
markMesh.triangles=triangles;
markMesh.RecalculateNormals();
Vector2[] uvm=new Vector2[4];
uvm[0]=new Vector2(1,0);
uvm[1]=new Vector2(0,0);
uvm[2]=new Vector2(0,1);
uvm[3]=new Vector2(1,1);
markMesh.uv=uvm;
filter.mesh=markMesh;
mark.GetComponent<Renderer>().material=skidMaterial;
mark.AddComponent<destroyAfter>();
}

void BumpPlay(float SuspensionStress){
float bumpRatio=Mathf.InverseLerp(bumpMinForce,bumpMaxForse,SuspensionStress);
if(bumpRatio>0){
bumpAudio.volume=Mathf.Lerp (bumpMinVolume,bumpMaxVolume,bumpRatio);
bumpAudio.pitch=bumpRatio;
bumpAudio.PlayOneShot(bumpSound);
}
}
}

ScrollDetailTexture

using UnityEngine;
using UnityEngine.UI;


[RequireComponent(typeof(Image))]
public class ScrollDetailTexture : MonoBehaviour
{
public bool uniqueMaterial = false;
public Vector2 scrollPerSecond = Vector2.zero;

Matrix4x4 m_Matrix;
Material mCopy;
Material mOriginal;
Image mSprite;
Material m_Mat;

void OnEnable ()
{
mSprite = GetComponent<Image>();
mOriginal = mSprite.material;

if (uniqueMaterial && mSprite.material != null)
{
mCopy = new Material(mOriginal);
mCopy.name = "Copy of " + mOriginal.name;
mCopy.hideFlags = HideFlags.DontSave;
mSprite.material = mCopy;
}
}

void OnDisable ()
{
if (mCopy != null)
{
mSprite.material = mOriginal;
if (Application.isEditor)
UnityEngine.Object.DestroyImmediate(mCopy);
else
UnityEngine.Object.Destroy(mCopy);
mCopy = null;
}
mOriginal = null;
}

void Update ()
{
Material mat = (mCopy != null) ? mCopy : mOriginal;

if (mat != null)
{
Texture tex = mat.GetTexture("_DetailTex");

if (tex != null)
{
mat.SetTextureOffset("_DetailTex", scrollPerSecond * Time.time);

// TODO: It would be better to add support for MaterialBlocks on UIRenderer,
// because currently only one Update() function's matrix can be active at a time.
// With material block properties, the batching would be correctly broken up instead,
// and would work with multiple widgets using this detail shader.
}
}
}
}

ResizePanel

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class ResizePanel : MonoBehaviour, IPointerDownHandler, IDragHandler {

public Vector2 minSize = new Vector2 (100, 100);
public Vector2 maxSize = new Vector2 (400, 400);

private RectTransform panelRectTransform;
private Vector2 originalLocalPointerPosition;
private Vector2 originalSizeDelta;

void Awake () {
panelRectTransform = transform.parent.GetComponent<RectTransform> ();
}

public void OnPointerDown (PointerEventData data) {
originalSizeDelta = panelRectTransform.sizeDelta;
RectTransformUtility.ScreenPointToLocalPointInRectangle (panelRectTransform, data.position, data.pressEventCamera, out originalLocalPointerPosition);
}

public void OnDrag (PointerEventData data) {
if (panelRectTransform == null)
return;

Vector2 localPointerPosition;
RectTransformUtility.ScreenPointToLocalPointInRectangle (panelRectTransform, data.position, data.pressEventCamera, out localPointerPosition);
Vector3 offsetToOriginal = localPointerPosition - originalLocalPointerPosition;

Vector2 sizeDelta = originalSizeDelta + new Vector2 (offsetToOriginal.x, -offsetToOriginal.y);
sizeDelta = new Vector2 (
Mathf.Clamp (sizeDelta.x, minSize.x, maxSize.x),
Mathf.Clamp (sizeDelta.y, minSize.y, maxSize.y)
);

panelRectTransform.sizeDelta = sizeDelta;
}
}

Play Area Timer

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

public class offroadtime : MonoBehaviour {

public Text OffRoadCoin;
public static int OffroadCoin;
public static int tempScore2;
public Text OffRoadtime;
public GameObject Exit;
public static int CurrentCoin;

public GameObject Sensormode;
public GameObject DPademode;
public static double OffRoadTime;
int hour;
int minutes;
int seconds;
// Use this for initialization
void Start () {
//PlayerPrefs.DeleteAll ();
OffRoadCoin.text = " " + OffroadCoin;

CurrentCoin = PlayerPrefs.GetInt("Coin");

hour = 0;
minutes= 0;
seconds = 0;
OffRoadTime = 0;
}

// Update is called once per frame
void LateUpdate () {

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

Time.timeScale = 0;
// Exit.SetActive (true);
DPademode.SetActive(false);
Sensormode.SetActive(false);
}

OffRoadTime = OffRoadTime + Time.deltaTime;
ShowTime1 ();
}
void Countdown(){


}

void ShowTime1(){

string timeString;
hour = (int)OffRoadTime / 3600;
minutes = (int)OffRoadTime/60;
seconds = (int)OffRoadTime%60;
timeString =hour.ToString() + ":" + minutes.ToString() + ":" + seconds.ToString();

OffRoadtime.text = "Time : " + timeString;
tempScore2 = minutes*10;

OffRoadCoin.text = "Coin : " + minutes*10;

}

public void MainMenu()
{
PlayerPrefs.SetInt ("Coin", CurrentCoin + tempScore2);

Application.LoadLevel ("Main menu");


}

public void Resume()
{
Time.timeScale = 1;
Exit.SetActive (false);
if (Settingmenu.Control1 == 1) {
Sensormode.SetActive(true);
} else {
DPademode.SetActive(true);
}
}

}