类似愤怒小鸟的星球引力效果




在Unity中的物理学:

       有一个真实的物理行为,你的游戏对象一定受到碰撞、 重力和各种其他力的影响。为模拟此物理功能是由Unity的物理引擎提供的主要功能之一(虽然很多大的项目都不是用它)。 

 重力:

        重力,汇集所有物质的力量。物质包括任何有形的事物。重力是成线性比例关系。因此,有很多问题,引力对围绕的飞行的东西产生向心力。 质量就是我们如何衡量物质的东西的数量。更大规模的事情是质量越大,它所产生的引力越多。当我们走在地球表面上。但由于地球是大大超过我们,而地球的引力能使我们落在地面,除了取决于所用的质量,重力也取决于你的东西有多远。这就是为什么我们在地球表面而没有在太阳表面, 在你的游戏中实现对地球引力的影响。

示范项目:

         打开Unity,转到File > New Project 。 给项目起名并选择2D 。 创建一个场景Scene与主照相机Main Camera,行星的Sprite ,鸟的Sprite 和画布里面包含文本,如下所示:


类似愤怒小鸟的星球引力效果_第1张图片

图片可以从网上下载,并设置如下:

类似愤怒小鸟的星球引力效果_第2张图片

类似愤怒小鸟的星球引力效果_第3张图片

类似愤怒小鸟的星球引力效果_第4张图片


        转到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场景,然后运行就会看到效果了啊!

你可能感兴趣的:(unity3d,Editor私人定制)