using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CheckObstacles : MonoBehaviour {
[SerializeField]
private Vector3 cameraPrePosition;
[SerializeField]
private Transform player;
private RaycastHit hit;
[SerializeField]
private float cameraMoveSpeed = 3f;
private const float _distance = 5.2f;
private Vector3 _offset = new Vector3(0f, 1.0f, -_distance);
private Vector3 _lookDown = new Vector3(30f, 0f, 0f);
[SerializeField]
bool ON=true;
void Start()
{
transform.position = player.TransformPoint(_offset);
transform.LookAt(player);
}
void Update()
{
Vector3 desiredPosition = player.TransformPoint(_offset);
if (desiredPosition.y < player.position.y)
{
desiredPosition.y = player.position.y;
}
if (Physics.Linecast(player.position, transform.position, out hit, LayerMask.GetMask("Field", "Enemy", "EnemyHit"))&& Vector3.Distance(player.position,transform.position)< _distance)
{
transform.position = Vector3.Lerp(transform.position, hit.point, cameraMoveSpeed * Time.deltaTime);
}
else if(ON)
{
Vector3 lerp = Vector3.Lerp(transform.position, desiredPosition, cameraMoveSpeed * Time.deltaTime);
Vector3 toTarget = player.position - lerp;
toTarget.Normalize();
toTarget *= _distance;
transform.position = player.position - toTarget;
}
transform.LookAt(player);
Debug.DrawLine(player.position , transform.position, Color.red, 0f, false);
}
void OnTriggerEnter(Collider other)
{
ON = false;
}
void OnTriggerExit(Collider other)
{
ON = true;
}
void OnTriggerStay(Collider other)
{
if(Vector3.Distance(player.position, transform.position) >= _distance)
{
ON = true;
}
}
}
***募集***
一緒にブログを運営してくれる人募集しています。
主な作業は修理作業です。画像足りなかったら拾ってくるとか、誤字の修正などです。
見出し増やすなど、見た目に関する所お願いします。
Twitterに連絡くれれば反応できます。
しんーーご (@shi_k_7) | Twitter