我正在做一个项目,玩家击败无限出现的敌人。但是当我创建敌人的预制件时,预制件无法读取对玩家游戏对象的引用。
我设法通过 GameObject 在 void start 中调用来使预制件跟随玩家
void Start(){ playerPosition = GameObject.FindGameObjectWithTag("Player").transform; }
但我无法重现这一点,因此敌人可以伤害玩家
void Start(){ playerBlood = GameObject.FindGameObjectWithTag("Player"); }
我不知道在
FindGameObjectWithTag("Player")
之后要添加什么
假设你的玩家 MonoBehaviour 被称为
Player
并且你的敌人脚本被称为 Enemy
(如果没有则更改类名),沿着这些思路的实现可能对你有用(允许敌人获得对玩家对象,并有一个关于如何对玩家对象造成伤害的人为示例)
using UnityEngine;
public class Player: MonoBehaviour
{
// ... pretend the rest of your code is here
///<summary>call this to hurt the player</summary>
///<param name="damageAmountIdk">amount of damage to deal or something</param>
public void HurtMe(float damageAmountIdk)
{
// TODO: decrease the player's current health or something like that
}
}
using UnityEngine;
public class Enemy: MonoBehaviour
{
private Player _player;
private Transform playerPosition;
// ... rest of your code
void Start()
{
_player = FindObjectOfType<Player>();
playerPosition = _player.transform;
//... other start method stuff
}
// demonstrating how the enemy can hurt the player
void ContrivedMethodToDemonstrateHurtingThePlayer()
{
// this deals 42 damage to the player object.
_player.HurtMe(42);
}
}