using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/*
自分の向いている上下角度によって、カメラの目標位置を変えるようにする
(上や下を向いているときは、カメラを自機に近づけてカメラ外にいかないようにする)
*/
public class CameraPosORG : MonoBehaviour {
public GameObject rotateObject;
Vector3 defDis = new Vector3(0, 2, -12);
private Vector3 preWorldlPos;
// Use this for initialization
void Start () {
transform.localPosition = defDis;
preWorldlPos = this.transform.position;
}
// Update is called once per frame
void Update () {
Vector3 localPos = this.transform.localPosition;
/*カメラを上下に動かしたときの目標カメラ位置補正*/
float angleX = rotateObject.transform.localEulerAngles.x;
if (rotateObject.transform.localEulerAngles.x > 180) {
//上を向いたとき
angleX = Mathf.Abs (angleX - 360);
localPos.y = defDis.y - defDis.y * ((angleX) / 70);
localPos.z = defDis.z - defDis.z * ((angleX) / 70);
} else {
//下を向いたとき
localPos.z = defDis.z - defDis.z * ((angleX) / 70);
localPos.y = defDis.y + Mathf.Abs(localPos.z - defDis.z);
}
/*ローカルX軸のカメラワークに余裕を持たせる*/
float angleY = rotateObject.transform.eulerAngles.y;
//ローカルX軸い前回からどれくらい動いたかを求める
Vector3 diffVec = Quaternion.Euler (0f, -angleY, 0f) * (this.transform.position - preWorldlPos);
localPos.x = localPos.x - diffVec.x;
if (localPos.x >= 4) {
localPos.x = 4;
}else if(localPos.x <= -4){
localPos.x = -4;
}
this.transform.localPosition = localPos;
preWorldlPos = this.transform.position;
}
}