如何在游戏开始时启动的预制板上的检查器中分配游戏对象变量?

D4V3XX

我有一个脚本来控制武器的拾取和放下,但是需要分配一些游戏对象才能起作用,但是由于我使用的是程序生成的地图(DunGen资产),所以我的所有武器都是在游戏开始时生成的。如何分配它们?

我的代码:

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

public class WeaponsPickup : MonoBehaviour
{
    public Rigidbody rb;
    public BoxCollider coll;
    public Transform player, gunContainer, fpsCam;

    public float pickUpRange;
    public float dropForwardForce, dropUpwardForce;

    public bool equipped;
    public static bool slotFull;

    private void Start()
    {
        //Setup
        if (!equipped)
        {
            rb.isKinematic = false;
            coll.isTrigger = false;
        }
        if (equipped)
        {
            rb.isKinematic = true;
            coll.isTrigger = true;
            slotFull = true;
        }
    }

    private void Update()
    {
        //Check if player is in range and "E" is pressed
        Vector3 distanceToPlayer = player.position - transform.position;
        if (!equipped && distanceToPlayer.magnitude <= pickUpRange && Input.GetKeyDown(KeyCode.E) && !slotFull) PickUp();

        //Drop if equipped and "Q" is pressed
        if (equipped && Input.GetKeyDown(KeyCode.Q)) Drop();
    }

    private void PickUp()
    {
        equipped = true;
        slotFull = true;

        //Make weapon a child of the camera and move it to default position
        transform.SetParent(gunContainer);
        transform.localPosition = Vector3.zero;
        transform.localRotation = Quaternion.Euler(Vector3.zero);
        transform.localScale = Vector3.one;

        //Make Rigidbody kinematic and BoxCollider a trigger
        rb.isKinematic = true;
        coll.isTrigger = true;
    }

    private void Drop()
    {
        equipped = false;
        slotFull = false;

        //Set parent to null
        transform.SetParent(null);

        //Make Rigidbody not kinematic and BoxCollider normal
        rb.isKinematic = false;
        coll.isTrigger = false;

        //Gun carries momentum of player
        rb.velocity = player.GetComponent<Rigidbody>().velocity;

        //AddForce
        rb.AddForce(fpsCam.forward * dropForwardForce, ForceMode.Impulse);
        rb.AddForce(fpsCam.up * dropUpwardForce, ForceMode.Impulse);
        //Add random rotation
        float random = Random.Range(-1f, 1f);
        rb.AddTorque(new Vector3(random, random, random) * 10);
    }
}

我想将游戏对象添加到这些变量中,但是直到将它们放置到场景中之前我都无法创建,但是它们会在游戏开始时生成。

阿克拉

首先分配对象武器(或您需要编写脚本的任何对象)的标签,然后分配:

public Transform _weapon;

void Start() {
     _weapon = GameObject.FindGameObjectWithTag("weapon").GetComponent<_weapon>();
}

应该为您工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在游戏结束时以与开始时相同的条件重新设置游戏?

来自分类Dev

如何在双变量开始时检查小数?

来自分类Dev

如何在游戏开始时重置PlayerPrefs,但在加载场景时保持价值?

来自分类Dev

当游戏对象与主角碰撞时,如何破坏整个预制件?

来自分类Dev

如何在每天开始时重置变量?

来自分类Dev

如何比较预制件和游戏对象?

来自分类Dev

当游戏从 Play Games 开始时,Android 回合制多人游戏 onTurnBasedMatchReceived 不会触发

来自分类Dev

在会话开始时如何启动PCManFM?

来自分类Dev

在编辑器中按播放时如何在眼镜上看到游戏

来自分类Dev

如何在屏幕上居中放置父游戏对象?

来自分类Dev

预制件/游戏对象作为相机

来自分类Dev

停止玩家在游戏开始时摔倒并使用点击在 unity2D 中开始

来自分类Dev

如何在程序开始时声明

来自分类Dev

如何从JPanel在Canvas上启动游戏?

来自分类Dev

如何在保存旧游戏对象的功能的同时用新游戏对象替换当前游戏对象?

来自分类Dev

Flask如何在每个请求开始时启动一个新的SQLAlchemy事务?

来自分类Dev

游戏开始时关闭切换框和图形

来自分类Dev

在触发器内按下操作键后,销毁属于预制件的游戏对象

来自分类Dev

当它需要来自场景的游戏对象时实例化/预制

来自分类Dev

在我的脚本中激活时,游戏对象预制件未显示在场景中

来自分类Dev

如何在C中的程序开始时开始计时

来自分类Dev

在活动开始时在循环中分配按钮的快速方法是什么?

来自分类Dev

如何检测游戏对象上的触摸

来自分类Dev

如何在多人游戏开始之前制作计时器 5.?

来自分类Dev

我如何在二板上画井字游戏

来自分类Dev

如何以特定的开始时间启动计时器?

来自分类Dev

Unity 访问碰撞器作为不同游戏对象上的公共变量

来自分类Dev

如何在服务器上恢复asp.net会话的开始时间?

来自分类Dev

Excel:当散点图从0开始时,如何在其上添加对数趋势线或曲线?

Related 相关文章

  1. 1

    如何在游戏结束时以与开始时相同的条件重新设置游戏?

  2. 2

    如何在双变量开始时检查小数?

  3. 3

    如何在游戏开始时重置PlayerPrefs,但在加载场景时保持价值?

  4. 4

    当游戏对象与主角碰撞时,如何破坏整个预制件?

  5. 5

    如何在每天开始时重置变量?

  6. 6

    如何比较预制件和游戏对象?

  7. 7

    当游戏从 Play Games 开始时,Android 回合制多人游戏 onTurnBasedMatchReceived 不会触发

  8. 8

    在会话开始时如何启动PCManFM?

  9. 9

    在编辑器中按播放时如何在眼镜上看到游戏

  10. 10

    如何在屏幕上居中放置父游戏对象?

  11. 11

    预制件/游戏对象作为相机

  12. 12

    停止玩家在游戏开始时摔倒并使用点击在 unity2D 中开始

  13. 13

    如何在程序开始时声明

  14. 14

    如何从JPanel在Canvas上启动游戏?

  15. 15

    如何在保存旧游戏对象的功能的同时用新游戏对象替换当前游戏对象?

  16. 16

    Flask如何在每个请求开始时启动一个新的SQLAlchemy事务?

  17. 17

    游戏开始时关闭切换框和图形

  18. 18

    在触发器内按下操作键后,销毁属于预制件的游戏对象

  19. 19

    当它需要来自场景的游戏对象时实例化/预制

  20. 20

    在我的脚本中激活时,游戏对象预制件未显示在场景中

  21. 21

    如何在C中的程序开始时开始计时

  22. 22

    在活动开始时在循环中分配按钮的快速方法是什么?

  23. 23

    如何检测游戏对象上的触摸

  24. 24

    如何在多人游戏开始之前制作计时器 5.?

  25. 25

    我如何在二板上画井字游戏

  26. 26

    如何以特定的开始时间启动计时器?

  27. 27

    Unity 访问碰撞器作为不同游戏对象上的公共变量

  28. 28

    如何在服务器上恢复asp.net会话的开始时间?

  29. 29

    Excel:当散点图从0开始时,如何在其上添加对数趋势线或曲线?

热门标签

归档