Sunday, 9 October 2016

carCamera

using UnityEngine;
using System.Collections;

public class carCamera : MonoBehaviour
{
bool canMove;
public Transform target;
public float height = 3f;
public float positionDamping = 3f;
public float velocityDamping = 3;
public float distance = 50f;
public LayerMask ignoreLayers = -1;

private RaycastHit hit = new RaycastHit();

private Vector3 prevVelocity = Vector3.zero;
private LayerMask raycastLayers = -1;

private Vector3 currentVelocity = Vector3.zero;

void Start(){

raycastLayers = ~ignoreLayers;
}

void FixedUpdate()
{

currentVelocity = Vector3.Lerp(prevVelocity, target.root.GetComponent<Rigidbody>().velocity, velocityDamping * Time.deltaTime);
currentVelocity.y = 0;
prevVelocity = currentVelocity;
}

void LateUpdate()
{
float speedFactor = Mathf.Clamp01(target.root.GetComponent<Rigidbody>().velocity.magnitude / 170.0f);
GetComponent<Camera>().fieldOfView = Mathf.Lerp(55, 72, speedFactor);
float currentDistance = Mathf.Lerp(10.0f, 10.0f, speedFactor);

currentVelocity = currentVelocity.normalized;

Vector3 newTargetPosition = target.position + Vector3.up * height;
Vector3 newPosition = newTargetPosition - (currentVelocity * currentDistance);
newPosition.y = newTargetPosition.y;

Vector3 targetDirection = newPosition - newTargetPosition;
if(Physics.Raycast(newTargetPosition, targetDirection, out hit, currentDistance, raycastLayers))
newPosition = 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, 1f))
{
if(hit.collider.gameObject.tag == "Maps")
{
canMove = false;
}
}

//Add something like 'bool canMove' to your script and add this if statement before you assign your new position
if (canMove)
transform.position = newPosition;


transform.position = new Vector3(transform.position.x, 7f, transform.position.z);   //added c codr that worked
transform.position = newPosition;
transform.LookAt (newTargetPosition);

}

}

No comments:

Post a Comment