unity与processing对照学习(3)

本文介绍在Unity中实现波浪运动效果的方法,通过实例化多个对象并使其各自运动,而非统一运动。讲解了使用代码控制物体位置,实现动态波浪效果的详细过程。
距离上一篇文章有一些时间了 因为一直没找到如何在unity中让实例化的多个对象各自运动 在unity官方直播中也问过 百度也搜过 加了好多微信公众号翻文章 直到今天才找到,研究了一番 对代码进行优化便于大家看清楚
processing中的波浪运动效果
在processing中的代码如下
void setup() { size(666, 333); } void draw() { background( 255 ,255 ,255,255 ); for (int i=0; i<width; i+=20) { rect( i, height/2 +sin((i +frameCount)* PI/180)*30, 10, 10, 3); } }
x轴方向:矩形间距20 y轴方向: · height/2 表示矩形放在屏幕中间 ; · sin( ) *30 表示sin()往复计算出0~1范围的数字,用乘以将数值放大30倍 · PI/180 表示sin( )括号内是弧度而不是角度,PI是半圆的弧长对应180度, PI除以180算出1度对应的弧长,这样就减少弧度转角度的计算步骤 · i 表示让矩形按照sin( i ) 的顺序进行排序,也就是波形排序 · framCount 表示在波形排序的基础上,给每个矩形一个递增值,从而实现波形运动
接下来看看unity中的波形运动效果图⬇️
unity代码如下
using System.Collections; using System.Collections.Generic; using UnityEngine; public class NewBehaviourScript : MonoBehaviour { public GameObject obj; GameObject[] objs = new GameObject[30]; void Start() { for (int i = 0; i < objs.Length; i++) { objs[i] = Instantiate(obj); } } void Update() { for (int i = 0; i < objs.Length; i++) { objs[i].transform.position = new Vector3(i*2f, Mathf.Sin((Time.time *90+i*30f) * Mathf.PI /180), 0); } } }
然后看看代码的思路 1.首先全局声明一个对象:public GameObject obj; 2.然后进行实例化克隆对象:Instantiate(obj) 3.再次声明一个对象数组并设定数组数量:GameObject[] objs = new GameObject[30]; 4.使用for循环功能,给数组内的每个对象赋予克隆对象 5.update中,使用for循环功能,给数组内的每个对象的坐标进行计算 · x轴坐标:让每个对象间距2f · y轴坐标:Mathf.Sin( )跟processing中的sin( )一样,往复计算结果是0~1 Mathf.PI /180跟processing中的PI/180一样,计算出1度对应的弧长 i30f 计算每个对象在y轴上间距 Time.time 90其中Time.time跟processing中的frameCount类似,由于数值太小所以 用乘以来放大90倍
本次内容主要是两个知识点: 第一个:实例化克隆多个对象 第二个:让实例化克隆的多个对象各自运动,而非统一运动
学海无涯,回头没岸,继续划船😅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值