Unity2D - 敌人预制件不会伤害玩家

问题描述 投票:0回答:1

我正在做一个项目,玩家击败无限出现的敌人。但是当我创建敌人的预制件时,预制件无法读取对玩家游戏对象的引用。

我设法通过 GameObject 在 void start 中调用来使预制件跟随玩家

void Start(){ playerPosition = GameObject.FindGameObjectWithTag("Player").transform; }

但我无法重现这一点,因此敌人可以伤害玩家

void Start(){ playerBlood = GameObject.FindGameObjectWithTag("Player"); }

我不知道在

FindGameObjectWithTag("Player")

之后要添加什么
unity-game-engine unityscript
1个回答
0
投票

假设你的玩家 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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.