public override void OnInspectorGUI() { //base.OnInspectorGUI(); //myMessage = "Finds a Transform for the camera to focus"; EditorGUILayout.HelpBox(myMessage, myType); //EditorGUILayout.LabelField("Test Bool"); CameraLookAt script = (CameraLookAt)target; script.lookAtTarget = (Transform)EditorGUILayout.ObjectField("Look At Transform", script.lookAtTarget, typeof(Transform), true); EditorGUILayout.BeginToggleGroup("Requires a target", script.lookAtTarget); script.bSmooth = EditorGUILayout.Toggle("Use Smoothing", script.bSmooth); script.dampener = EditorGUILayout.FloatField("Slerp Speed", script.dampener); EditorGUILayout.EndToggleGroup(); if (GUILayout.Button("LookAtPlayer")) { script.LocatePlayer(); } if (script.lookAtTarget != null) { myMessage = "Camera will look at " + script.lookAtTarget.name; myType = MessageType.Info; if (GUILayout.Button("Clear Transform")) { script.lookAtTarget = null; } } else { myMessage = "Camera has no target... Send help"; myType = MessageType.Error; } }
private SaveableData ToSaveableData() { var obj = new SaveableData { Width = Width, Height = Height, SoftwareDownsize = SoftwareDownsize, CameraPosition = CameraPosition.ToArray(), CameraLookAt = CameraLookAt.ToArray(), CameraFov = CameraFov, AlignCar = AlignCar, AlignCameraHorizontally = AlignCameraHorizontally, AlignCameraHorizontallyOffset = AlignCameraHorizontallyOffset, AlignCameraHorizontallyOffsetRelative = AlignCameraHorizontallyOffsetRelative, AlignCameraVertically = AlignCameraVertically, AlignCameraVerticallyOffset = AlignCameraVerticallyOffset, AlignCameraVerticallyOffsetRelative = AlignCameraVerticallyOffsetRelative, SteerDeg = SteerDeg, HeadlightsEnabled = HeadlightsEnabled, BrakeLightsEnabled = BrakeLightsEnabled, LeftDoorOpen = LeftDoorOpen, RightDoorOpen = RightDoorOpen, ShowDriver = ShowDriver, }; Save(obj); return(obj); }
void Start() { cameraLook = GetComponent <CameraLookAt> (); startTime = Time.time; journeyLength = Vector3.Distance(startMarker.position, endMarker.position); }
public void LookAt(Transform lookAtTransform, string lookAtType) { if (CameraLookAt.Check(lookAtType)) { this.lookAtTransform = lookAtTransform; this.lookAtType = lookAtType; this.lookAtChange = true; } }
// Use this for initialization private void Start() { b = GetComponent <MonoBoid>().boid; //take this out CameraLookAt.Register(b); }
public override void OnInspectorGUI() { CameraLookAt targetScript = (CameraLookAt)target; targetScript.cameraTarget = EditorGUILayout.Vector3Field("Look at point", targetScript.cameraTarget); if (GUI.changed) { EditorUtility.SetDirty(target); } }
public Camera(IMessenger messenger, CameraRotation rotation, CameraLookAt lookAt, CameraView view, BeatModifier beatModifier, double fov, double zoom) { Messenger = messenger ?? throw new ArgumentNullException(nameof(messenger)); Rotation = rotation; LookAt = lookAt; View = view; BeatModifier = beatModifier ?? throw new ArgumentNullException(nameof(beatModifier)); FOV = fov; Zoom = zoom; }
void OnSceneGUI() { CameraLookAt targetScript = (CameraLookAt)target; targetScript.cameraTarget = Handles.PositionHandle(targetScript.cameraTarget, Quaternion.identity); Handles.SphereCap(0, targetScript.cameraTarget, Quaternion.identity, 2); if (GUI.changed) { EditorUtility.SetDirty(target); } }
public MapCamera() { _camera = GameObject.FindGameObjectWithTag(AppConfig.TAB_MAIN_CAMERA); _cameraControl = _camera.GetComponent <CameraControl> (); _cAutoFollow = new CameraAutoFollow(this); _cAutoScale = new CameraAutoScale(this); _cSmoothMove = new CameraSmoothMove(this); _cShowTeam = new CameraShowTeam(this); _cLookAt = new CameraLookAt(this); _cManualMove = new CameraManualMove(this); }
public static CameraLookAt Instance() { if (!cameraLookAt) { cameraLookAt = FindObjectOfType(typeof(CameraLookAt)) as CameraLookAt; if (!cameraLookAt) { Debug.LogError("There needs to be one active CameraLookAt script on a GameObject in your scene."); } } return(cameraLookAt); }
private void SyncCamera() { if (_cameraBusy) { return; } _cameraBusy = true; try { var offset = AlignCar ? -Renderer.CarCenter : Vector3.Zero; CameraPosition.Set(Renderer.Camera.Position + offset); CameraLookAt.Set((Renderer.CameraOrbit?.Target ?? Renderer.Camera.Position + Renderer.Camera.Look) + offset); CameraFov = Renderer.Camera.FovY.ToDegrees(); AlignCameraHorizontally = false; AlignCameraVertically = false; } finally { _cameraBusy = false; } }
protected void LoadCamera(SaveableData o) { _cameraBusy = true; try { CameraPosition.Set(o.CameraPosition); CameraLookAt.Set(o.CameraLookAt); CameraFov = o.CameraFov; AlignCar = o.AlignCar; AlignCameraHorizontally = o.AlignCameraHorizontally; AlignCameraHorizontallyOffset = o.AlignCameraHorizontallyOffset; AlignCameraHorizontallyOffsetRelative = o.AlignCameraHorizontallyOffsetRelative; AlignCameraVertically = o.AlignCameraVertically; AlignCameraVerticallyOffset = o.AlignCameraVerticallyOffset; AlignCameraVerticallyOffsetRelative = o.AlignCameraVerticallyOffsetRelative; } finally { _cameraBusy = false; UpdateCamera(); } }
// Update is called once per frame void Update() { if (targetLookAt != null) { transform.LookAt(targetLookAt, Vector3.up); } if (Input.GetMouseButton(1)) { stopFloating = true; float rotX = Input.GetAxis("Mouse X"); float rotY = Input.GetAxis("Mouse Y"); CameraLookAt lookAt = Camera.main.GetComponent <CameraLookAt>(); lookAt.body.AddRelativeForce(Vector3.right * rotX, ForceMode.VelocityChange); lookAt.body.AddRelativeForce(Vector3.forward * rotY, ForceMode.VelocityChange); } else { stopFloating = false; } }
private void UpdateCamera() { if (_cameraBusy) { return; } _cameraBusy = true; try { Renderer.SetCamera(CameraPosition.ToVector(), CameraLookAt.ToVector(), CameraFov.ToRadians()); if (AlignCar) { Renderer.AlignCar(); } Renderer.AlignCamera(AlignCameraHorizontally, AlignCameraHorizontallyOffset, AlignCameraHorizontallyOffsetRelative, AlignCameraVertically, AlignCameraVerticallyOffset, AlignCameraVerticallyOffsetRelative); _cameraIgnoreNext = true; } finally { _cameraBusy = false; } }
// Update is called once per frame void Update() { Rect cameraRange = vo.cameraRange; Transform cameraTransform = vo.cameraTransform; //镜头新的位置 float cameraX = cameraTransform.position.x; float cameraY = cameraTransform.position.y; //移动方式 if (vo.lookAtChange) { vo.lookAtChange = false; lookAt = null; switch (vo.lookAtType) { case CameraLookAt.LOOK_AT_CENTER: lookAt = new LookAtCenter(); break; case CameraLookAt.LOOK_AT_RANGE: lookAt = new LookAtRange(); break; case CameraLookAt.LOOK_AT_FRONT: lookAt = new LookAtFront(); break; } } if (lookAt != null) { lookAt.Update(); if (lookAt.moveFlag) //镜头缓动效果,离目标点越近移动越慢,但有最小速度限制 { float spped = 0.05f; //每次移动剩余距离的 0.05 倍,计算总的时间需要用到积分,有点难度 (@.@) float min = 0.005f; float speedx = (lookAt.moveX - cameraTransform.position.x) * spped; float speedy = (lookAt.moveY - cameraTransform.position.y) * spped; if (speedx > 0 && speedx < min) { speedx = min; } if (speedx < 0 && speedx > -min) { speedx = -min; } if (speedy > 0 && speedy < min) { speedy = min; } if (speedy < 0 && speedy > -min) { speedy = -min; } float xValue = (cameraTransform.position.x - lookAt.moveX) * (cameraTransform.position.x + speedx - lookAt.moveX); float yValue = (cameraTransform.position.y - lookAt.moveY) * (cameraTransform.position.y + speedy - lookAt.moveY); if ((xValue < 0 || speedx == 0) && (yValue < 0 || speedy == 0)) //移动完成 { cameraX = lookAt.moveX; cameraY = lookAt.moveY; } else { float x = cameraTransform.position.x; float y = cameraTransform.position.y; if (xValue > 0) { x = cameraTransform.position.x + speedx; } else if (xValue < 0) { x = lookAt.moveX; } if (yValue > 0) { y = cameraTransform.position.y + speedy; } else if (yValue < 0) { y = lookAt.moveY; } cameraX = x; cameraY = y; } } } //添加新的屏幕震动 while (vo.shakes.Count != 0) { CameraShake shake = vo.shakes[0] as CameraShake; //震动唯一,则覆盖之前的 if (shake.only) { for (int i = 0; i < shakes.Count; i++) { if ((shakes[i] as CameraShake).tag == shake.tag) { shakes.RemoveAt(i); i--; } } } shakes.Add(shake); vo.shakes.RemoveAt(0); } //计算屏幕震动 for (int i = 0; i < shakes.Count; i++) { (shakes[i] as CameraShake).Update(); cameraX += (shakes[i] as CameraShake).x; cameraY += (shakes[i] as CameraShake).y; if ((shakes[i] as CameraShake).completeFlag == true) { shakes.RemoveAt(i); i--; } } //控制镜头移动范围 if (cameraX > cameraRange.x + cameraRange.width) { cameraX = cameraRange.x + cameraRange.width; } if (cameraX < cameraRange.x) { cameraX = cameraRange.x; } if (cameraY > cameraRange.y + cameraRange.height) { cameraY = cameraRange.y + cameraRange.height; } if (cameraY < cameraRange.y) { cameraY = cameraRange.y; } //设置镜头位置 cameraTransform.position = new Vector3(cameraX, cameraY); }
// Use this for initialization void Start() { CameraLookAt script = GetComponent <CameraLookAt>(); lookAtTarget = script.lookAtTarget; }
void Start() { camlook = Camera.main.GetComponent <CameraLookAt>(); }
void Start() { cameraLookAt = CameraLookAt.Instance(); hudController = HUDController.Instance(); }