??
在Unity中的物理学:
有一个真实的物理行为,你的游戏对象一定受到碰撞、 重力和各种其他力的影响。为模拟此物理功能是由Unity的物理引擎提供的主要功能之一(虽然很多大的项目都不是用它)。
重力:
重力,汇集所有物质的力量。物质包括任何有形的事物。重力是成线性比例关系。因此,有很多问题,引力对围绕的飞行的东西产生向心力。 质量就是我们如何衡量物质的东西的数量。更大规模的事情是质量越大,它所产生的引力越多。当我们走在地球表面上。但由于地球是大大超过我们,而地球的引力能使我们落在地面,除了取决于所用的质量,重力也取决于你的东西有多远。这就是为什么我们在地球表面而没有在太阳表面, 在你的游戏中实现对地球引力的影响。
示范项目:
打开Unity,转到File > New Project 。 给项目起名并选择2D 。 创建一个场景Scene与主照相机Main Camera,行星的Sprite ,鸟的Sprite 和画布里面包含文本,如下所示:
图片可以从网上下载,并设置如下:
转到GameObject > UI > Text,你可以填写你的内容。在这里,我使用游戏视图中的文本内容为"Press Space"。 现在,旋转在行星附近的鸟,编写一个 C# 脚本如下图所示,将它应用于你的鸟。
Bird.cs:
using UnityEngine; using System.Collections; public class Bird : MonoBehaviour { public Transform planet; private float forceAmountForRotation = 10; private Vector3 directionOfPlanetFromBird; private bool allowForce; void Start() { directionOfPlanetFromBird = Vector3.zero; } void Update () { allowForce = false; if (Input.GetKey(KeyCode.Space)) allowForce = true; directionOfPlanetFromBird = transform.position - planet.position; transform.right = Vector3.Cross(directionOfPlanetFromBird, Vector3.forward); } void FixedUpdate () { if (allowForce) rigidbody2D.AddForce (transform.right * forceAmountForRotation); } }
向行星的中心添加可以拉这只鸟的引力,编写一个 C# 脚本如下所示并将其应用到你们的星球。
using UnityEngine; using System.Collections; public class Planet : MonoBehaviour { public Transform bird; private float gravitationalForce = 5; private Vector3 directionOfBirdFromPlanet; void Start () { directionOfBirdFromPlanet = Vector3.zero; } void FixedUpdate () { directionOfBirdFromPlanet = (transform.position-bird.position).normalized; bird.rigidbody2D.AddForce (directionOfBirdFromPlanet*gravitationalForce); } }
这样Play场景,然后运行就会看到效果了啊!
时间: 2024-10-14 01:02:15