【问题标题】:Why can't I attach my Player to a transform in my script?为什么我不能将我的播放器附加到脚本中的转换?
【发布时间】:2021-04-13 17:53:52
【问题描述】:

我正在尝试编写一个脚本,僵尸在其中寻找玩家,如果玩家进入边界,它将开始追逐它。我的问题是我无法将我的播放器附加到检查器中的脚本,我不确定为什么。我对代码没有问题(至少我不这么认为),只是它没有附加。播放器是统一标准资产的预制件。

编辑:脚本附加到我资产中的预制件上。层次结构中的玩家。

以防万一这是我的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ZK_attack : MonoBehaviour
{    
    public Transform Player;
    public float MoveSpeed = 4.5f;
    public float MaxDist = 4.0f;
    public float MinDist = 1.5f;
    private Coroutine animat = null;
    private Animator anim;


    void Update()
    {
        

        transform.LookAt(Player);

        if (Vector3.Distance(transform.position, Player.position) >= MinDist)
        {
            transform.position += transform.forward * MoveSpeed * Time.deltaTime;
            anim.SetBool("inRadius", true);

            if (Vector3.Distance(transform.position, Player.position) <= MaxDist)
            {
                anim.SetBool("AttackingPlayer", true);


            }

        }

        if (Vector3.Distance(transform.position, Player.position) <= MinDist)
        {
            anim.SetBool("inRadius", false);
        }

        if (Vector3.Distance(transform.position, Player.position) >= MaxDist)
        {
            anim.SetBool("AttackingPlayer", false);
        }
    }
}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    好的,问题是您只能将对象拖到场景中已经存在的脚本中,除非它们本身是assets文件夹中的预制件,即使它位于对象上。为了完成你需要的,在你的 Start() 添加

    Player = GameObject.Find("...name of object you wish to set as Player").transform;
    

    【讨论】:

    • 从技术上讲,您可以将东西拖到预制件中。只是您可以拖入预制件的唯一东西是其他预制件或其他类型的资产,而不是场景实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多