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

??

在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-08-11 07:44:23

类似愤怒小鸟的星球引力效果的相关文章

类似愤怒小鸟的飞行弹道

?? 抛体运动的类型:        "很多子弹不仅垂直运动而且追随着水平的运动.那就,当他们向上移动或向下运动时也正在水平方向移动.弹体的运动 - - 横向和纵向 运动的两个组成部分. 垂直运动:              在垂直运动,重力作用在物体上,并给予负加速度"-9.8 m/s2"(重心加速度).这意味着物体的速度在每一秒减小-9.8 米/2 .自由落体的速度是 V = g * t. 如果我们有初始速度那么,物体下落速度方程: V = Vi + g * t 加速度是

Windows Phone中使用Storyboard做类似 IOS 屏幕小白点的效果

windows phone中做动画其实很方便的,可以使用Blend拖来拖去就做出一个简单的动画,下面做了一个 ios屏幕小白点的拖动效果,包括速度判断移动 使用Blend生成以下代码 <Storyboard x:Name="HandFunGTLSb"><!-- 向左滑动时动画 --> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransfo

实现类似微信语音播放动画的效果

要求就是点击播放按钮,小喇叭开始动,当语音结束后,停止动画.如图: 这需要用到UIImageView的帧动画,该动画可以让一系列图片在特定的时间内按顺序显示出来.需要的素材如下: audio_icon_1 *****分割线***** audio_icon_2 *******分割线*******audio_icon_3 代码如下: // 添加播放时候的动画图片 [_audioBtn addSubview:self.animationview]; [_audioBtn setImage:[UIIma

如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示)

如何实现SP文档库类似百度文档库的效果 (副标题:如何在SP2013文档库的SWF文件用FlexPager显示) 1. 编辑文档库列表显示页面,如下图: 2. 添加内容编辑器,如下图: 3. 添加如下在[内容编辑器中]-[编辑源],添加如下JS代码,如下图: ?  代码如下: <scrip type="text/javascript" src="/SiteAssets/jquery-1.4.1.js"></script> <script

请教如何用 peewee 实现类似 django ORM 的这种查询效果。

本人新入坑的小白,如有不对的地方请包涵~~~! 在 django 中代码如下:模型定义: class Friends(models.Model): first_id = models.IntegerField() second_id = models.IntegerField() class Meta: unique_together=('first_id', 'second_id',) 查询语句如下: friend_list_info = [] friend_list1 = Friends.o

【Android】类似QQ风格的popupwindow弹窗效果

[Android]类似QQ风格的popupwindow弹窗效果 该源码主要是实现类似QQ风格的popupwindow弹出窗效果,出现时有遮挡图层,消失时无遮挡图层. 下载地址:http://www.devstore.cn/code/info/273.html

UWP:使用Composition实现类似安卓的水波纹Ripple效果

原文:UWP:使用Composition实现类似安卓的水波纹Ripple效果 先放效果图: 首先,建立一个RippleHelper.cs文件,然后建立以下附加属性: IsFillEnable:是否扩大到整个控件 RippleDuration:持续时间 RippleRadius:不扩大到整个控件时的最大半径 RippleColor:波纹的颜色 public static bool GetIsFillEnable(DependencyObject obj) { return (bool)obj.Ge

尝试自己的Perl语言的包 TCP协议的再包装起到类似python语言装饰器的效果

#!/usr/bin/perl # Filename: BuildSocketTCP.pm # #   Copyright 2012 Axxeo GmbH #   Licensed under the Apache License, Version 2.0 (the "License"); #   you may not use this file except in compliance with the License. #   You may obtain a copy of t

尝试自己的Perl语言的包 UDP协议的再包装起到类似python语言装饰器的效果

#!/usr/bin/perl # Filename: BuildSocketUDP.pm # #   Copyright 2012 Axxeo GmbH #   Licensed under the Apache License, Version 2.0 (the "License"); #   you may not use this file except in compliance with the License. #   You may obtain a copy of t