1. 首页 > 游戏攻略秘籍

游戏动态水 动态游戏logo

作者:admin 更新时间:2025-02-17
摘要:一、户外活动游戏大全户外活动游戏有粘泡泡糖,天气预报,红绿灯,搭三角形,老鼠笼。1、粘泡泡糖所有的孩子围成一个圆圈,边拍手边说:“粘泡泡糖,粘泡泡糖。”孩子问:“粘哪里?”老师说:“粘肩膀(或身体的其他部位)。”孩子马上两人一组互相碰肩膀。2、天气预报老师说:“下大雨。”孩子说:“不怕。”老师说:“下雪。”孩子说:“不怕。”当老师说下冰雹时,孩子们立刻蹲下抱住头,慢者被淘汰。3、红绿灯老师作红绿灯...,游戏动态水 动态游戏logo

 

一、户外活动主题游戏锦集

户外活动主题游戏有粘泡泡糖,天气预报,红绿灯,搭三角形,老鼠笼。

1、粘泡泡糖

全部的孩子围成壹个圆圈,边拍手边说:“粘泡泡糖,粘泡泡糖。”孩子问:“粘何处?”老师说:“粘肩膀(或身体的其他部位)。”孩子马上两人一组互相碰肩膀。

2、天气预报

老师说:“下大雨。”孩子说:“不怕。”老师说:“下雪。”孩子说:“不怕。”当老师说下冰雹时,孩子们立刻蹲下抱住头,慢者被淘汰。

3、红绿灯

老师作红绿灯(胳膊上举为红灯,放下为绿灯),游戏开始,孩子们发车行驶,看到红灯后立即停止,绿灯可以继续行驶,出现错误的返回原点从头开始。

4、搭三角形

孩子分成若干组,每组6个小兄弟,搭成三角形的样子,听老师的口令给左,“三角形”一起给左走三步,老师说给右(给前,给后),三角形一起给右(给前,给后)走三步。

5、老鼠笼

班中三分之二的孩子拉手围成壹个圆圈,做成老鼠笼,其余的孩子扮演老鼠,游戏开始,全部的孩子一起说:“老鼠老鼠坏物品,半夜出来偷吃米,大家搭个老鼠笼,咔嚓一声抓住你。”扮演老鼠的孩子则围圆圈绕S跑,当说到抓住你的时候,一起把手放下,在圈中的孩子即被抓住。

扩展资料

户外活动主题游戏好处

1、户外活动主题让你精力充沛

太累了,想多来几杯咖啡提神吗?也许你并不需要这种咖啡因,而是应该离家休息一会。一项研究显示,在户外的开阔地休息20分钟可以给你的大脑充能,像一杯星巴克一样提神醒脑。

2、在户外健身更轻松

有没有感觉在户外健身比室内更加轻松,这也许要归功于那些绿色植物。在一项小实验中,研究人员让骑自行车的人在绿色、灰色和红色的镜头前分别骑行。

二、2 019的王者水面如何弄成动态的

河道地图

灯光效果:

大家将场景灯光更新到了全局光照,最新的王者峡谷会拥有更加细腻的光影质感,更好的体现出王者峡谷的气候环境

王者新地图隐藏草效果

隐藏草效果:

大家更新了王者峡谷中隐藏草的造型,草丛更加生动天然,更符合峡谷环境

王者新地图植物效果

植物效果:

大家更新了峡谷中的草地和植物效果,更真正柔嫩的植物为峡谷带来了生机

王者新地图河道效果

河道效果:

大家运用了最新的河道水面效果,清澈的水面被微风吹拂出波纹和浪花,水面漂浮着浮萍,带给玩家更真正的水面感受

三、怎样运用Unity创新动态的2D水体效果

在本篇教程中,大家将运用简单的物理机制模拟壹个动态的2D水体。大家将运用壹个线性渲染器、网格渲染器,触发器以及粒子的混合体来创新这一水体效果,最终得到可运用于你下款游戏的水纹和水花。这里包含了Unity样本源,但你应该能够运用任何游戏引擎以相同的原理执行类似的操作。

配置水体管理器

大家将运用Unity的壹个线性渲染器来渲染大家的水体表面,并运用这些节点来展现持续的波纹。

unity-water-linerenderer(from gamedevelopment)

大家将追踪每个节点的位置、速度和加速情况。为此,大家将会运用到阵列。因此在大家的类顶端将添加如下变量:

float[] xpositions;

float[] ypositions;

float[] velocities;

float[] accelerations;

LineRenderer Body;

LineRenderer将存储大家全部的节点,并概述大家的水体。大家仍需要水体本身,将运用Meshes来创新。大家将需要对象来托管这些网格。

GameObject[] meshobjects;

Mesh[] meshes;

大家还需要碰撞器以便事物可同水体互动:

GameObject[] colliders;

大家也存储了全部的常量:

const float springconstant= 0.02f;

const float damping= 0.04f;

const float spread= 0.05f;

const float z=-1f;

这些常量中的z是大家为水体配置的Z位移。大家将运用-1标注它,这样它就会呈现于大家的对象之前(游戏邦注:你也许想根据自己的需求将其调整为在对象之前或之后,那你就必须运用Z坐标来确定和之相关的精灵所在的位置)。

下一步,大家将保持一些值:

float baseheight;

float left;

float bottom;

这些就是水的维度。

大家将需要一些可以在编辑器中配置的公开变量。首先,大家将为水花运用粒子体系:

public GameObject splash:

接下来就是大家将用于线性渲染器的材料:

public Material mat:

除了这些之后,大家将为主要水体运用的网格类型如下:

public GameObject watermesh:

大家想要能够托管全部这些数据的游戏对象,令其作为管理器,产出大家游戏中的水体。为此,大家将编写SpawnWater()函数。

这个函数将采用水体左边、跑马度、顶点以及底部的输入:

public void SpawnWater(float Left, float Width, float Top, float Bottom)

{

(虽然这看似有所矛盾,但却有利于从左往右快速进行关卡设计)

创新节点

现在大家将找出自己需要几许节点:

int edgecount= Mathf.RoundToInt(Width)* 5;

int nodecount= edgecount+ 1;

大家将针对每个单位宽度运用5个节点,以便呈现流畅的移动(你可以改变这一点以便平衡效率和流畅性)。大家由此可得到全部线段,接着需要在末端的节点+ 1。

大家要做的首件事就是以LineRenderer组件渲染水体:

Body= gameObject.AddComponent();

Body.material= mat;

Body.material.renderQueue= 1000;

Body.SetVertexCount(nodecount);

Body.SetWidth(0.1f, 0.1f);

大家在此还要做的是选择材料,并通过选择渲染队列中的位置而令其在水面之上渲染。大家配置正确的节点数据,将线段宽度设为0.1。

你可以根据自己所需的线段粗细来改变这一宽度。你也许注意到了SetWidth()需要两个参数,这是线段开始及末尾的宽度。大家希望该宽度恒定不变。

现在大家制作了节点,将初始化大家全部的极致变量:

xpositions= new float[nodecount];

ypositions= new float[nodecount];

velocities= new float[nodecount];

accelerations= new float[nodecount];

meshobjects= new GameObject[edgecount];

meshes= new Mesh[edgecount];

colliders= new GameObject[edgecount];

baseheight= Top;

bottom= Bottom;

left= Left;

大家已经有了全部阵列,将控制大家的数据。

现在要配置大家阵列的值。大家将从节点开始:

for(int i= 0; i< nodecount; i++)

{

ypositions[i]= Top;

xpositions[i]= Left+ Width* i/ edgecount;

accelerations[i]= 0;

velocities[i]= 0;

Body.SetPosition(i, new Vector3(xpositions[i], ypositions[i], z));

}

在此,大家将全部Y位置设于水体之上,之后一起渐进增加全部节点。由于水面平静,大家的速度和加速值开始为0。

大家将把LineRenderer(Body)中的每个节点设为其正确的位置,以此完成这个循环。

创新网格

这正是它棘手的地方。

大家有自己的线段,但大家并没有水体本身。大家要运用网格来制作,如下所示:

for(int i= 0; i< edgecount; i++)

{

meshes[i]= new Mesh();

现在,网格存储了一系列变量。首个变量等于简单:它包含了全部顶点(或转角)。

unity-water-Firstmesh(from gamedevelopment)

该图表显示了大家所需的网格片段的样子。第壹个片段中的顶点被标注出来了。大家总共需要4个顶点。

Vector3[] Vertices= new Vector3[4];

Vertices[0]= new Vector3(xpositions[i], ypositions[i], z);

Vertices[1]= new Vector3(xpositions[i+ 1], ypositions[i+ 1], z);

Vertices[2]= new Vector3(xpositions[i], bottom, z);

Vertices[3]= new Vector3(xpositions[i+1], bottom, z);

现在如你所见,顶点0处于左上角,1处于右上角,2是左下角,3是右下角。大家之后要记下。

网格所需的第二特点能就是UV。网格拥有纹理,UV会选择大家想撷取的那部分纹理。在这种情况下,大家只想要左上角,右上角,右下角和右下角的纹理。

Vector2[] UVs= new Vector2[4];

UVs[0]= new Vector2(0, 1);

UVs[1]= new Vector2(1, 1);

UVs[2]= new Vector2(0, 0);

UVs[3]= new Vector2(1, 0);

现在大家又需要这些数据了。网格是由三角形组成的,大家了解任何四边形都是由两个三角形组成的,因此现在大家需要告知网格它怎样绘制这些三角形。

unity-water-Tris(from gamedevelopment)

看看含有节点顺序标注的转角。三角形A连接节点0,1,以及3,三角形B连接节点3,2,1。因此大家想制作壹个包含6个整数的阵列:

int[] tris= new int[6]{ 0, 1, 3, 3, 2, 0};

这就创新了大家的四边形。现在大家要配置网格的值。

meshes[i].vertices= Vertices;

meshes[i].uv= UVs;

meshes[i].triangles= tris;

现在大家已经有了自己的网格,但大家没有在场景是渲染它们的游戏对象。因此大家将从包括壹个网格渲染器和筛网过滤器的watermesh预制件来创新它们。

meshobjects[i]= Instantiate(watermesh,Vector3.zero,Quaternion.identity) as GameObject;

meshobjects[i].GetComponent().mesh= meshes[i];

meshobjects[i].transform.parent= transform;

大家配置了网格,令其成为水体管理器的子项。

创新碰撞效果

现在大家还需要自己的碰撞器:

colliders[i]= new GameObject();

colliders[i].name=“Trigger”;

colliders[i].AddComponent();

colliders[i].transform.parent= transform;

colliders[i].transform.position= new Vector3(Left+ Width*(i+ 0.5f)/ edgecount, Top– 0.5f, 0);

colliders[i].transform.localScale= new Vector3(Width/ edgecount, 1, 1);

colliders[i].GetComponent().isTrigger= true;

colliders[i].AddComponent();

至此,大家制作了方形碰撞器,给它们壹个名称,以便它们会在场景中显得更整洁一点,而且再次制作水体管理器的每个子项。大家将它们的位置配置于两个节点之点,配置好大致,并为其添加了WaterDetector类。

现在大家拥有自己的网格,大家需要壹个函数随着水体移动进行更新:

void UpdateMeshes()

{

for(int i= 0; i< meshes.Length; i++)

{

Vector3[] Vertices= new Vector3[4];

Vertices[0]= new Vector3(xpositions[i], ypositions[i], z);

Vertices[1]= new Vector3(xpositions[i+1], ypositions[i+1], z);

Vertices[2]= new Vector3(xpositions[i], bottom, z);

Vertices[3]= new Vector3(xpositions[i+1], bottom, z);

meshes[i].vertices= Vertices;

}

}

你也许注意到了这个函数只运用了大家之前编写的代码。唯一的不同差异在于这次大家并不需要配置三角形的UV,由于这些仍然保持不变。

大家的下一步任务是让水体本身运行。大家将运用FixedUpdate()递增地来调整它们。

void FixedUpdate()

{

执行物理机制

首先,大家将把Hooke定律写Euler方式结合在一起找到新坐标、加速和速度。

Hooke定律是F=kx,这里的F是指由水流产生的力(记下,大家将把水体表面模拟为水流),k是指水流的常量,x则是位移。大家的位移将成为每个节点的y坐标减去节点的基本高度。

下一步,大家将添加壹个和力的速度成比例的阻尼影响来削弱力。

for(int i= 0; i< xpositions.Length; i++)

{

float force= springconstant*(ypositions[i]– baseheight)+ velocities[i]*damping;

accelerations[i]=-force;

ypositions[i]+= velocities[i];

velocities[i]+= accelerations[i];

Body.SetPosition(i, new Vector3(xpositions[i], ypositions[i], z));

}

Euler方式很简单,大家只要给速度添加加速,给每帧坐标增加速度。

注:我只是假设每个节点的质量为1,但你也许会想用:

accelerations[i]=-force/mass;

现在大家将创新波传播。下面内容节点是根据Michael Hoffman的教程调整而来的:

float[] leftDeltas= new float[xpositions.Length];

float[] rightDeltas= new float[xpositions.Length];

在此,大家要创新两个阵列。针对每个节点,大家将检查之前节点的高度,以及当前节点的高度,并将二者差异放入leftDeltas。

之后,大家将检查后续节点的高度和当前检查节点的高度,并将二者的差异放入rightDeltas(大家将乘以壹个传播常量来增加全部值)。

for(int j= 0; j< 8; j++)

{

for(int i= 0; i< xpositions.Length; i++)

{

if(i> 0)

{

leftDeltas[i]= spread*(ypositions[i]– ypositions[i-1]);

velocities[i- 1]+= leftDeltas[i];

}

if(i< xpositions.Length– 1)

{

rightDeltas[i]= spread*(ypositions[i]– ypositions[i+ 1]);

velocities[i+ 1]+= rightDeltas[i];

}

}

}

当大家集齐全部的高度数据时,大家最后就可以派上用场了。大家无法查看到最右端的节点右侧,或者最大左端的节点左侧,因此基条件就是i> 0以及i< xpositions.Length– 1。

因此,要注意大家在壹个循环中包含整片代码,并运行它8次。这是由于大家想以少量而多次的时刻运行这一经过,而不是进行一次大型运算,由于这会削弱流动性。

添加水花

现在大家已经有了流动的水体,下一步就需要让它溅起水花!

为此,大家要增加壹个称为Splash()的函数,它会检查水花的X坐标,以及它所击中的任何物体的速度。将其配置为公开情形,这样大家可以在之后的碰撞器中调用它。

public void Splash(float xpos, float velocity)

{

首先,大家应该确保特定的坐标位于大家水体的范围之内:

if(xpos>= xpositions[0]&& xpos<= xpositions[xpositions.Length-1])

{

接着大家将调整xpos,让它出现在相对于水体起点的位置上:

xpos-= xpositions[0];

下一步,大家将找到它所接触的节点。大家可以这样计算:

int index= Mathf.RoundToInt((xpositions.Length-1)*(xpos/(xpositions[xpositions.Length-1]– xpositions[0])));

这就是它的运行方法:

1.大家选取相对于水体左侧边缘位置的水花位置(xpos)。

2.大家将相对于水体左侧边缘的的右侧位置进行划分。

3.这让大家了解了水花所在的位置。例如,位于水体四分之三处的水花的值就是0.75。

4.大家将把这一数字乘以边缘的数量,这就可以得到大家水花最接近的节点。

velocities[index]= velocity;

现在大家要配置击中水面的物体的速度,令其和节点速度一致,以样节点就会被该物体拖入深处。

Particle-System(from gamedevelopment)

注:你可以根据自己的需求改变这条线段。例如,你可以将其速度添加到当前速度,或者运用动量而非速度,并除以你节点的质量。

现在,大家想制作壹个将产生水花的粒子体系。大家早些定义,将其称为“splash”。要确保不要让它和Splash()相混淆。

首先,大家要配置水花的参,以便调整物体的速度:

float lifetime= 0.93f+ Mathf.Abs(velocity)*0.07f;

splash.GetComponent().startSpeed= 8+2*Mathf.Pow(Mathf.Abs(velocity),0.5f);

splash.GetComponent().startSpeed= 9+ 2* Mathf.Pow(Mathf.Abs(velocity), 0.5f);

splash.GetComponent().startLifetime= lifetime;

在此,大家要选取粒子,配置它们的生活周期,以免他们击中水面就快速消失,而且根据它们速度的直角配置速度(为小小的水花增加壹个常量)。

你也许会看着代码心想,“何故要两次配置startSpeed?”你这样想没有错,难题在于,大家运用壹个起始速度配置为“两个常量间的随机数”这种粒子体系(Shuriken)。不幸的是,大家并没有太多以脚本访问Shuriken的途径,因此为了获取这一行为,大家必须两次配置这个值。