unity添加风吹树叶掉落的效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity添加风吹树叶掉落的效果相关的知识,希望对你有一定的参考价值。

参考技术A 1、首先在层级视图创建一个粒子系统,调整的X轴的旋转是90度,使粒子系统是朝下播放的。
2、选择粒子的大小的方式是约束在两个数值之间的随机值。
3、设置粒子的大小在0。5-2之间。
4、勾选开启3D旋转,设置旋转的方式是约束在两个数值之间的随机值。
5、设置旋转的值都是0-360。
6、调整粒子发射的速率。
7、设置粒子发射的形状为Cone,并把角度设置为0(目的是使发射方向是垂直向下)设置半径为15。
8、勾选设置生命旋转周期(RotationOverLifetime),勾选Separate,设置值类型为(RandomBetweenTwoConstants)。
9设置生命旋转周期的各个轴的值为:80-200。
10、创建一个树叶材质。把该材质赋值给粒子系统。
11、这时,就可以在场景看到以下效果。
12、给场景创建一个地面,并创建一个材质,把这个材质赋值到地面上。
13、接下来设置树叶碰到地面会自动消失的效果。
14、在场景创建一个风区,让树叶受到风的作用力而影响树叶的飘落效果。
15、设置粒子接受风区的影响。
16、由于当前的风只能是一个方向的风,可以通过脚本设置风区的旋转,得到不同方向的风。

福利手游APP下载

新增小号回收账号交易

¥免费分享

手游代理加盟,主推游戏分成70%左右

低投入,分成高

¥198

手游加盟代理自助注册页面

入行手游项目必看教程

¥198

新自由之刃(赤月服)

满攻速魂环版传奇

¥1.76复古

绝世仙王之八荒寻仙录

超高人气仙侠手游

¥无折扣返利

自由之刃2(新)

冰龙魂环复古经典

¥新版复古传奇

    官方电话官方服务
      官方网站福利app代理申请

Unity2D学习笔记Day15:角色下蹲+掉落死亡+切换场景

学习资源:B站 M_Studio《Unity教程2D入门》20-21

Unity Assets:Sunnyland

Day15

更正:Time.fixedDeltaTime

让角色移动和跳跃时更加流畅,如果是用FixedUpdate函数,应该相对应选择
Time.fixedDeltaTime。

1. 增加Crouch(下蹲)效果

为节省时间,这里就不添加这个实际效果。但理解一下其中的思路和方法。

在Input中没有Crouch,如何添加?
右键,复制某一项,然后修改其中的参数即可。

下蹲时碰撞体不变,怎么办?
观察游戏运行时的碰撞体,发现即使角色下蹲,碰撞体仍然保持原来的样子。也就是说角色下蹲后还是无法通过低处。

这里就是先前要用两个碰撞体的原因。
当角色下蹲后,应该让头部的box collider消失,起立后再让碰撞体出现。
注意
节点用setactive,组件用enabled。

disColl.enabled = false;

小技巧:如何在游戏运行时看见碰撞体?
点击右上角的Gizmos。
就可以看见属性面板中展开的部分,在Scene中的效果。

如图,这里展开两个碰撞体的组件。

问题:下蹲钻到一半时站起,会被卡住。
思路:如果监测到上部有ground,就不能起立。
方法:选中靠近角色头顶的一个点作为基准点,画一个圈,判断ground是否在这个圈内。
Physics2D.OverlapCircle(Vector2 point,float radius,int layerMask)
Checks if a collider falls within a circular area
point:基准点
radius:判断范围
layerMask:要判断的图层

在这里插入代码片

小技巧:判断角色头顶的位置
给角色添加一个子节点celling,将它移至角色的头顶。

代码如下:

void Crouch(){
	//当没有障碍物时
	if(!Physics2D.OverlapCircle(Celling.position,0.2f,ground))
	{
		if(Input.GetButton("Crouch"))
		{
			anim.SetBool("isCrouching",true);
			disColl.enabled = false;
		}
		else
		{
			anim.SetBool("isCrouching",false);
			disColl.enabled = true;
		}
		//控制角色下蹲
	}
}

2. 角色掉落死亡

教程里面还使用了trigger碰撞体,但我觉得用y坐标来判断即可。
当角色小于某一y坐标,触发死亡。

我用了一个public变量来设置死亡边界。

public float deadLiney = -7.0f;

游戏重置

using UnityEngine.SceneManagement;

重启当前场景。
update中:

if(transform.position.y < deadLiney)
{
     SceneManager.LoadScene(SceneManager.GetActiveScene().name);   
}

制作delay效果

延迟2s后启动。

将上述代码重新写为一个函数。

void Restart()
{
	SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}

update中:

停止播放音乐

		if(transform.position.y < deadLiney)
        {
            //将所有的音频都禁用
            GetComponent<AudioSource>().enabled = false;
            //延迟2s后重启
            Invoke("Restart", 2f);
        }

3.切换场景

  1. 使用场景名
    SceneManager.LoadScene(“name”)
  2. 使用场景编号
    SceneManager.GetActiveScene().buildIndex

添加脚本EnterHouse:

	void Update()
    {
        if(Input.GetKeyDown(KeyCode.E))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
        }
    }

场景编号是什么?
在build setting中场景名后面的就是场景编号。
可以通过拖动来修改顺序。

将该脚本添加给Dialog,只有Dialog窗口启动时,按e才会触发场景切换。
(否则在游戏过程中如果误触了e就会触发场景切换!)

以上是关于unity添加风吹树叶掉落的效果的主要内容,如果未能解决你的问题,请参考以下文章

[Unity算法]斜抛运动(变种)

iOS掉落回弹效果

js运动框架之掉落的扑克牌(重心弹起效果)

canvas动画之三 -- 黑客帝国文字掉落效果

微信小程序全屏飘落效果(飘雪掉落canvas)

unity按钮添加恒力