c# - 在我的 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 楼。
解决方案
所以我猜你想给你新实例化的“ThrowObject”增加力量,对吗?但是,您不是引用此对象,而是向“rb”添加力,它似乎根本没有连接到新对象。
相反,您可能想做这样的事情:
rb = Instantiate(ThrowObject, new Vector3(0, 356, 26), Quaternion.identity).GetComponent<Rigidbody>();
推荐阅读
- javascript - Jquery Ajax 在本地机器上工作而不是在服务器上
- report - Splunk Query 列出 Reports 的使用情况
- flutter - 从物料路线返回后设置状态
- reactjs - 如何使用 setState 单独从末尾删除数组?
- c# - 使用 Nginx 的 gRPC 通信卡住
- c++ - 为什么用 constexpr 声明的引用可以绑定到 Indeterminate 值变量?
- python - Pysolar:计算辐照:它涵盖的时间跨度
- python - Flask API 可在本地设备上工作,但不能在 heroku 上工作(向 flask api 发送大字符串)
- javascript - nvd3 multiBarChart中键的标题
- apache-spark - 在 Spark 中执行以“WITH”关键字开头的 SQL 语句