using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
using StarterAssets;
using UnityEngine.InputSystem;
using Unity.VisualScripting;
public class TPPController : MonoBehaviour
{
[SerializeField]
private CinemachineVirtualCamera aimVirtualCamera;
[SerializeField]
private float normalSensitivity;
[SerializeField]
private float aimSensitivity;
[SerializeField]
private LayerMask aimColliderLayermask = new LayerMask();
//[SerializeField]
//private Transform debugTransform;
[SerializeField]
private Transform pfBulletProjectile;
[SerializeField]
private Transform firePoint;
public bool HitTarget;
//[SerializeField]
//private GameObject targetPf;
//[SerializeField]
//public List<Transform> targets = new List<Transform>();
//private int randomIndex;
//public float lifeTime = 0f;
[SerializeField]
private Transform vfxGreen;
[SerializeField]
private Transform vfxRed;
private StarterAssetsInputs starterAssetsInputs;
private ThirdPersonController thirdPersonController;
private Animator animator;
private void Awake()
{
starterAssetsInputs = GetComponent<StarterAssetsInputs>();
thirdPersonController = GetComponent<ThirdPersonController>();
animator = GetComponent<Animator>();
}
private void Update()
{
//lifeTime += Time.deltaTime;
//TargetLife();
Vector3 mouseWorldPosition = Vector3.zero;
Vector2 screenCenterPoint = new Vector2(Screen.width / 2f, Screen.height / 2f);
Ray hitInfo = Camera.main.ScreenPointToRay(screenCenterPoint);
Transform hitTransform = null;
if (Physics.Raycast(hitInfo, out RaycastHit rayCastHit, 999f, aimColliderLayermask))
{
//debugTransform.position = rayCastHit.point;
mouseWorldPosition = rayCastHit.point;
hitTransform = rayCastHit.transform;
}
if(starterAssetsInputs.aim)
{
aimVirtualCamera.gameObject.SetActive(true);
thirdPersonController.SetSensitivity(aimSensitivity);
thirdPersonController.SetRotateOnMove(false);
animator.SetLayerWeight(1, Mathf.Lerp(animator.GetLayerWeight(1),1f,Time.deltaTime * 13f));
Vector3 worldAimTarget = mouseWorldPosition;
worldAimTarget.y = transform.position.y;
Vector3 aimDirection = (worldAimTarget - transform.position).normalized;
transform.forward = Vector3.Lerp(transform.forward, aimDirection, Time.deltaTime * 20f);
}
else
{
aimVirtualCamera.gameObject.SetActive(false);
thirdPersonController.SetSensitivity(normalSensitivity);
thirdPersonController.SetRotateOnMove(true);
animator.SetLayerWeight(1, Mathf.Lerp(animator.GetLayerWeight(1), 0f, Time.deltaTime * 13f));
}
if(starterAssetsInputs.shoot)
{
if (hitTransform != null)
{
if (hitTransform.GetComponent<BulletTarget>() != null)
{
Instantiate(vfxGreen, mouseWorldPosition, Quaternion.identity);
HitTarget = true;
//TargetLife();
}
else
{
Instantiate(vfxRed, mouseWorldPosition, Quaternion.identity);
//HitTarget=false;
}
}
//Projectile
/*
Vector3 aimDirection = (mouseWorldPosition - firePoint.position).normalized;
Instantiate(pfBulletProjectile, firePoint.position, Quaternion.LookRotation(aimDirection,Vector3.up));
*/
starterAssetsInputs.shoot = false;
}
}
/*
public void TargetLife()
{
if (lifeTime == 5 || HitTarget)
{
randomIndex = Random.Range(0, 216);
for (int i = 0; i < targets.Count; i++)
{
//randPos = targets[randomIndex].position;
targetPf.SetActive(false);
targetPf.transform.position = targets[randomIndex].transform.position;
targetPf.SetActive(true);
}
lifeTime = 0;
HitTarget = false;
//Debug.Log(controller.HitTarget);
}
}
*/
}