Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using Mirror;
- public class PlayerMovement : NetworkBehaviour
- {
- public float speed;
- private Rigidbody2D rb;
- private Vector2 mv;
- public Camera viewCamera;
- public float viewRadius;
- [Range(0, 360)]
- public float viewAngle;
- public LayerMask targetMask;
- public LayerMask obstacleMask;
- [HideInInspector]
- public List<Transform> visibleTargets = new List<Transform>();
- public float meshResolution;
- // Start is called before the first frame update
- void Start()
- {
- if (isLocalPlayer)
- {
- //StartCoroutine("FindTargetsWithDelay", .2f);
- viewCamera = Camera.main;
- rb = GetComponent<Rigidbody2D>();
- }
- }
- // Update is called once per frame
- void Update()
- {
- if (isLocalPlayer)
- {
- //DrawFieldOfView();
- Vector2 mi = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
- mv = mi.normalized * speed;
- var dir = Input.mousePosition - viewCamera.WorldToScreenPoint(transform.position);
- var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
- transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
- /*anim.SetFloat("MoveX", Input.GetAxisRaw("Horizontal"));
- anim.SetFloat("MoveY", Input.GetAxisRaw("Vertical"));*/
- }
- }
- private void FixedUpdate()
- {
- if (isLocalPlayer)
- {
- rb.MovePosition(rb.position + mv * Time.fixedDeltaTime);
- }
- }
- //DONT LOOK DONW HERE
- /* void FindVisibleTargets()
- {
- visibleTargets.Clear();
- Collider[] targetsInViewRadius = Physics.OverlapSphere(transform.position, viewRadius, targetMask);
- for (int i = 0; i < targetsInViewRadius.Length; i++)
- {
- Transform target = targetsInViewRadius[i].transform;
- Vector3 dirToTarget = (target.position - transform.position).normalized;
- if (Vector3.Angle(transform.forward, dirToTarget) < viewAngle / 2)
- {
- float dstToTarget = Vector3.Distance(transform.position, target.position);
- if (!Physics.Raycast(transform.position, dirToTarget, dstToTarget, obstacleMask))
- {
- visibleTargets.Add(target);
- }
- }
- }
- }
- void DrawFieldOfView()
- {
- int stepCount = Mathf.RoundToInt(viewAngle * meshResolution);
- float stepAngleSize = viewAngle / stepCount;
- for (int i = 0; i < stepCount; i++)
- {
- float angle = transform.eulerAngles.y - viewAngle / 2 + stepAngleSize * i;
- Debug.DrawLine(transform.position, transform.position + DirFromAngle(angle, true) * viewRadius, Color.red);
- }
- }
- public Vector3 DirFromAngle(float angleInDegrees, bool angleIsGlobal)
- {
- if (!angleIsGlobal)
- {
- angleInDegrees += transform.eulerAngles.y;
- }
- return new Vector3(Mathf.Sin(angleInDegrees * Mathf.Deg2Rad), 0, Mathf.Cos(angleInDegrees * Mathf.Deg2Rad));
- }
- IEnumerator FindTargetsWithDelay(float delay)
- {
- while (true)
- {
- yield return new WaitForSeconds(delay);
- FindVisibleTargets();
- }
- }*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement