Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Editor code
- using UnityEngine;
- using UnityEditor;
- [CustomEditor(typeof(CameraOnRails))]
- public class CurveForCamera : Editor {
- void OnSceneGUI() {
- CameraOnRails cameraOnRails = target as CameraOnRails;
- Vector3 v = new Vector3(cameraOnRails.radius*Mathf.Cos(2f*Mathf.PI*cameraOnRails.posInCurve),
- 0f,
- cameraOnRails.radius*Mathf.Sin(2f*Mathf.PI*cameraOnRails.posInCurve));
- v+= cameraOnRails.transform.position;
- if(cameraOnRails.cameraTransform!=null){
- cameraOnRails.cameraTransform.position = v;
- v = cameraOnRails.transform.position+new Vector3(0f,cameraOnRails.cameraSlope,0f);
- cameraOnRails.cameraTransform.LookAt(v);
- }
- int n = cameraOnRails.numberSegments;
- for(int i=0;i<(n-1);i++){
- Vector3 v1 = new Vector3(cameraOnRails.radius*Mathf.Cos(2f*Mathf.PI*i/(n-1)),
- 0f,
- cameraOnRails.radius*Mathf.Sin(2f*Mathf.PI*i/(n-1)));
- Vector3 v2 = new Vector3(cameraOnRails.radius*Mathf.Cos(2f*Mathf.PI*(i+1)/(n-1)),
- 0f,
- cameraOnRails.radius*Mathf.Sin(2f*Mathf.PI*(i+1)/(n-1)));
- Handles.color = Color.green;
- Handles.DrawLine(v1+cameraOnRails.transform.position,v2+cameraOnRails.transform.position);
- }
- }
- }
- //Scene code
- using UnityEngine;
- using System.Collections;
- [ExecuteInEditMode]
- public class CameraOnRails : MonoBehaviour {
- [RangeAttribute(10,50)]
- public int numberSegments;
- public float radius;
- public Transform cameraTransform;
- [RangeAttribute(0.0f, 2.0f)]
- public float posInCurve;
- [RangeAttribute(-20f,20f)]
- public float cameraSlope;
- }
Advertisement
Add Comment
Please, Sign In to add comment