[Unity3D]用C#代码控制重力方向
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[Unity3D]⽤C#代码控制重⼒⽅向
在 unity 引擎中, 修改重⼒⽅向的⽅法⼀般有三种:
1: 在项⽬设置中修改全局重⼒⽅向
左上⾓菜单栏 Edit --> Project Settings --> Physucs
修改 Gravity 中的X Y Z 的值即可做到控制全局的重⼒⽅向, 默认情况下的 Y 轴的值为 -9.81
2: 通过代码的⽅式修改全局的重⼒⽅向
public class GravityController : MonoBehaviour {
public bool flag = false;
private Vector3 gravity;
void Start() {
gravity = Physics.gravity;
}
void FixedUpdate() {
Physics.gravity = gravity;
if (flag) { // 修改重⼒⽅向
gravity.x = 0;
gravity.y = 9.81f;
gravity.z = 0;
}else{
gravity.x = 0;
gravity.y = -9.81f;
gravity.z = 0;
}
}
}
3: 修改单个物体的重⼒⽅向
这个严格来说的话并不科学, 过随意修改重⼒⽅向好像本来就不科学, 但是也就是说我们⽆法通过直接修改跟重⼒相关的函数的变量来达到控制重⼒⽅向的⽬的, 但是我们可以通过修改物体的受⼒⽅向来模拟物体受到了不同⽅向的重⼒的影响,,虽然说起来有点拗⼝, 不过做起来也是很简单的
⾸先, 如上图, 我们去把 Gravity 中的 X Y Z 三个⽅向的重⼒全部设置为 0 , 然后在你想要修改重⼒受⼒⽅向的物体上加如下程序即可
public class GravityController : MonoBehaviour {
public bool flag = false;
void FixedUpdate() {
if (flag) {
Rigidbody rigidbody = gameObject.GetComponent<Rigidbody>(); rigidbody.AddForce(new Vector3(0, 9.81f, 0));
} else {
Rigidbody rigidbody = gameObject.GetComponent<Rigidbody>(); rigidbody.AddForce(new Vector3(0, -9.81f, 0));
}
}
}。