我需要使用光线投射致盲一个敌方人工智能。当光线投射与敌方发生碰撞时,敌方isblinded的布尔值必须设置为true。我已经引用了敌方的游戏对象,但是控制台日志给我这个错误。NullRefrenceException:对象引用未设置为对象的示例Raycast.Update()(位于Assets/Scripts/Raycast.cs.23)。任务是检测光线投射是否击中敌人,并通过视觉捕捉转移状态。以下是代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Raycast : MonoBehaviour
{
[SerializeField] LayerMask enemyLayer;
RaycastHit hitinfo;
public GameObject enemy;
// Start is called before the first frame update
void Update()
{
Ray ray = new Ray(transform.position, transform.TransformDirection(Vector3.forward));
Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 20, Color.red);
if (Physics.Raycast(ray, out hitinfo, 100, enemyLayer))
{
Debug.Log("Hit");
Debug.Log(hitinfo.collider.gameObject.name);
//enemy is blinded is true
enemy.GetComponent<Enemy>().isBlinded = true;
Debug.Log(enemy.GetComponent<Enemy>().isBlinded);
}
else
{
Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 20, Color.green);
}
}
}
第一节第一节第一节第一节第一次
我尝试使用Enemy enemyscript类,但这不允许我在检查器中添加敌人对象。
1条答案
按热度按时间x4shl7ld1#
看起来你得到的是对游戏对象本身的引用,而不是游戏对象上的脚本/组件。
试试看:
...