如何在Unity的预制脚本中引用GameObject的位置

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

我刚开始使用Unity,在我的第一个游戏中,我试图使这些敌方方块追逐玩家。敌人是在随机位置生成的,我正在尝试使它们向玩家立方体的位置移动。但是当我尝试引用播放器的“变形”时,它不会让我将其拖动到顶部,有任何修复方法吗?

using UnityEngine;

public class enemyFollow : MonoBehaviour {
    public Transform player;
    public Rigidbody rb;
    public float movementForce;

    // Update is called once per frame
    void FixedUpdate()
    {
        if (player.position.x > transform.position.x){
            rb.AddForce(movementForce * Time.deltaTime,0,0);
        }
        if (player.position.x < transform.position.x){
            rb.AddForce(-movementForce * Time.deltaTime,0,0);
        }
        if (player.position.z > transform.position.z){
            rb.AddForce(0,0,movementForce * Time.deltaTime);
        }
        if (player.position.z < transform.position.z){
            rb.AddForce(0,0,-movementForce * Time.deltaTime);
        }
    }
 }

团结不允许我将玩家从游戏对象窗口拖到预制脚本上。错误消息:“尚未分配敌人的变量玩家”它不会让我分配播放器。

c# unity3d
2个回答
0
投票

您可以将其添加到无效的Start()方法中:


0
投票

如果我的理解正确,您正在尝试在预制配置中将玩家分配给敌人。那是行不通的,因为预制件不在现场。由于预制可以在任何场景中实例化,因此您不能引用场景对象。您需要在游戏过程中执行此操作,除非在设置时所有敌人都已在场景中(在这种情况下,您需要对实例化的敌人进行操作,然后将其复制粘贴)。

© www.soinside.com 2019 - 2024. All rights reserved.