首页 > 解决方案 > 在我的 Unity C# 游戏中,应该抛出一个游戏对象,但它完全没有任何作用 - 有什么问题?

问题描述

我目前正在使用 C# 开发一个 Unity 项目,我的刚体没有移动,但我没有收到错误消息。它应该向前和向上抛出,但它什么也没做——我在这里做错了什么?

或者可能是我的代码不是问题,但我搞砸了一些统一的东西?

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

public class GameManager : MonoBehaviour
{
    public GameObject ThrowObject;
    public Canvas StartMenuC, m_SettingsC, m_ShopC;
    public Button m_Start, m_Settings, m_Shop, m_CloseShop;
    public RawImage m_SettingsImage, m_RTXON, m_RTXOFF;
    public Texture m_Texture, m_Texture2;
    public Toggle m_RTX;
    public Text MoneyText;
    string m_ForceXString = string.Empty;
    string m_ForceYString = string.Empty;
    public Rigidbody rb;
    public Transform Forward, Upward;
    private Vector3 m_StartPos, m_StartForce;
    private Vector3 m_NewForce;

    float m_ForceX, m_ForceY;

    private int Money = 100;

    // Start is called before the first frame update
    void Start()
    {
       // rb = GetComponent<Rigidbody>();

        m_NewForce = new Vector3(-5.0f, 1.0f, 0.0f);

        m_ForceX = 10;
        m_ForceY = 10;

        m_ForceXString = "0";
        m_ForceYString = "0";

        m_StartPos = transform.position;
        m_StartForce = rb.transform.position;
        m_NewForce = new Vector3(m_ForceX, m_ForceY, 0);

        MoneyText = GetComponent<Text>();

        m_CloseShop.onClick.AddListener(CloseShop);
        m_Settings.onClick.AddListener(Settings);
        m_Start.onClick.AddListener(StartGame);
        m_Shop.onClick.AddListener(ShopOpen);

        m_SettingsImage = GetComponent<RawImage>();

        m_SettingsC.enabled = false;
        m_ShopC.enabled = false;

        m_RTX.onValueChanged.AddListener(delegate {
            CheckToggleOn(m_RTX);
        });

        // PlayerPrefs.SetInt("Money", Money);

        //     MoneyText.text = "Money:  " + Money.ToString() + " $";
    }

    // Update is called once per frame
    void Update()
    {
    }

    void Settings()
    {
        if (m_SettingsC.enabled == false)
        {
            m_SettingsC.enabled = true;
        }
        else
        {
            m_SettingsC.enabled = false;
        }
    }

    void ShopOpen()
    {
        m_ShopC.enabled = true;
    }

    void CloseShop()
    {
        m_ShopC.enabled = false;
    }

    private void CheckToggleOn(Toggle change)
    {
        if (m_RTX.isOn)
        {
            m_RTXOFF.enabled = false;
            m_RTXON.enabled = true;
        }
        else
        {
            m_RTXON.enabled = false;
            m_RTXOFF.enabled = true;
        }
    }

    private void StartGame()
    {
        m_SettingsC.enabled = false;
        StartMenuC.enabled = false;
        m_ShopC.enabled = false;

        Instantiate(ThrowObject, new Vector3(0, 356, 26), Quaternion.identity);

        Debug.Log("HelloWorld");

        if (ThrowObject)
        {
            Debug.Log("Throw object = true");

            rb.AddForce(m_NewForce, ForceMode.Impulse);
        }
    }
}

我的错误是什么?

和 bc 的:“看起来你的帖子主要是代码;请添加更多细节。” 我不知道我还应该在这里写什么我会告诉游戏完成后应该是什么样子这将是一个 3D 手机游戏,你的目标是把东西扔出窗外我知道这很愚蠢但它是根据我以前学校的一个真实故事改编的,当时有人经常把书包扔出窗外,不得不把它们拿回来,而学校在 5 楼。

标签: c#unity3d

解决方案


所以我猜你想给你新实例化的“ThrowObject”增加力量,对吗?但是,您不是引用此对象,而是向“rb”添加力,它似乎根本没有连接到新对象。

相反,您可能想做这样的事情:

rb = Instantiate(ThrowObject, new Vector3(0, 356, 26), Quaternion.identity).GetComponent<Rigidbody>();

推荐阅读