距离上一篇文章有一些时间了 因为一直没找到如何在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倍
本次内容主要是两个知识点: 第一个:实例化克隆多个对象 第二个:让实例化克隆的多个对象各自运动,而非统一运动
学海无涯,回头没岸,继续划船😅
本文介绍在Unity中实现波浪运动效果的方法,通过实例化多个对象并使其各自运动,而非统一运动。讲解了使用代码控制物体位置,实现动态波浪效果的详细过程。
628

被折叠的 条评论
为什么被折叠?



