为啥我的脚本(旨在在游戏开始时消除重力)不起作用?
Posted
技术标签:
【中文标题】为啥我的脚本(旨在在游戏开始时消除重力)不起作用?【英文标题】:Why does my script, which aims to remove gravity when the game starts, not work?为什么我的脚本(旨在在游戏开始时消除重力)不起作用? 【发布时间】:2019-07-04 16:47:24 【问题描述】:我正在尝试在 Unity 中创建一个脚本,其中当游戏开始时重力将归零。问题是,我启动游戏后重力还在。
这是针对 Unity3D 游戏的。我已经尝试更改变量名称,添加 using System;
并将我的脚本移动到 Rigidbody 组件的顶部,但这些都不起作用。
public class PlayerGrav : MonoBehaviour
public Rigidbody rb;
void Start()
rb.useGravity = false;
void Update()
本以为游戏启动时重力会被移除,但实际输出中重力仍然存在,立方体仍然向下坠落。
【问题讨论】:
这很奇怪,您确定将正确的对象拖到公共字段吗? “将我的脚本移动到刚体组件的顶部”是什么意思?也许您的脚本通过刚体附加到游戏对象?如果是这样,您应该从游戏对象访问刚体: gameObject.GetComponentrb.velocity = Vector3.zero;
你也可以使用Physics.gravity = Vector3.zero;
(docs.unity3d.com/ScriptReference/Physics-gravity.html)设置全局重力
【参考方案1】:
我知道这是一个老问题,但我一直在寻找答案。我是 Unity 新手,所以我花了很长时间才弄清楚,但我使用的是 Rigidbody 2d,所以这对我有用
gameObject.GetComponent<Rigidbody2D>().gravityScale = 0;
【讨论】:
【参考方案2】:-
创建一个新场景
创建一个
new cube
在您的 PlayerGrav 脚本中将 rb = this.GetComponent<Rigidbody>()
添加到您的启动函数中
将您的 PlayerGrav 脚本附加到 new cube
点击播放,查看new cube
的检查器窗口中的“使用重力”属性(确保检查器未锁定到其他游戏对象)
如果上述试运行成功,那么您需要检查原始场景中的其他代码/对象。如果您的原始场景中有大量其他对象,那么我建议先禁用其他对象,然后逐组重新启用它们,以查看导致问题的对象/单一对象。
【讨论】:
以上是关于为啥我的脚本(旨在在游戏开始时消除重力)不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的带有“$(this).next”的 JavaScript/jQuery 脚本不起作用?
为啥即使包含所有脚本引用,我的 jQuery-UI 对话框也不起作用?