Ich möchte „canSeePlayer“ als booleschen Wert in einer if-Anweisung in playerController verwenden. Wenn der Spieler also die Auslösezone eines Feindes auf der Karte betritt, wird ein Game-Over-Bildschirm
Gegnercode:
angezeigt
Code: Select all
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class enemies : MonoBehaviour
{
public GameObject playerRef;
public LayerMask targetLayer;
public LayerMask obstructionLayer;
public bool canSeePlayer { get; private set; }
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Bullets"))
{
Destroy(gameObject);
}
}
private void Start()
{
playerRef = GameObject.FindGameObjectWithTag("Player");
//StartCoroutine(FOVcheck());
}
private void OnTriggerStay2D(Collider2D collision)
{
if (collision.CompareTag("Player"))
{
Vector2 dicrectionToTarget = (playerRef.transform.position - transform.position).normalized;
float distanceToTarget = Vector2.Distance(transform.position, playerRef.transform.position);
canSeePlayer = !Physics2D.Raycast(transform.position, dicrectionToTarget,distanceToTarget, obstructionLayer);
}
}
private void OnTriggerExit2D(Collider2D collision)
{
if(canSeePlayer)
{
canSeePlayer = false;
}
}
}
Code: Select all
using UnityEngine;
using UnityEngine.Rendering;
public class playerController : MonoBehaviour
{
public float moveSpeed = 5f;
public Rigidbody2D rb;
public Weapon weapon;
Vector2 moveDirection;
Vector2 mousePosition;
public void Update()
{
if (Input.GetMouseButtonDown(0))
{
weapon.Fire();
}
}
private void FixedUpdate()
{
float moveX = Input.GetAxisRaw("Horizontal");
float moveY = Input.GetAxisRaw("Vertical");
moveDirection.x = moveX;
moveDirection.y = moveY;
mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
rb.linearVelocity = new Vector2(moveDirection.x * moveSpeed, moveDirection.y * moveSpeed);
Vector2 aimDirection = mousePosition - rb.position;
float aimAngle = Mathf.Atan2(aimDirection.y, aimDirection.x) * Mathf.Rad2Deg - 90f;
rb.rotation = aimAngle;
}
}
Mobile version