📋📋📋
這次上課我又有奇怪的問題了
在期中作品時我做好了莉露姆施法的打字遊戲
但我一直想讓最後變成動畫中的魔法特效卻不知道如何下手
老師做了示範告訴我可以做大小和透明度的調整
最後成功啦!
雖然沒有動畫上好看但至少還原了80%吧!
💾 程式碼存檔區ArrayList<PVector>cloud = new ArrayList<PVector>(); //星雲
ArrayList<PVector> v = new ArrayList<PVector>(); //速度
ArrayList<PVector>cloud2 = new ArrayList<PVector>(); //星雲2
ArrayList<PVector> v2 = new ArrayList<PVector>(); //速度2
void setup(){
size(1920,1080,P3D);
addCloud(0);
addCloud2(0);
}
void addCloud(float d){
for(int i=0;i<6;i++){
float a = i/6.0 * TWO_PI - d;
cloud.add(new PVector( 960+5*cos(a),540+5*sin(a)));
v.add(new PVector( 14*cos(a),14*sin(a)));
}
}
void addCloud2(float d){
for(int i=0;i<12;i++){
float a = i/12.0 * TWO_PI - d;
cloud2.add(new PVector( 960+5*cos(a),540+5*sin(a)));
v2.add(new PVector( 14*cos(a),14*sin(a)));
}
}
void draw(){
background(255);
if(frameCount%2==0) addCloud( +frameCount/60.0 );
for(int i=cloud.size()-1;i>=0;i--){
PVector p = cloud.get(i);
fill(#C6FF00,30);
noStroke();
ellipse(p.x,p.y,p.z,p.z);
p.x += v.get(i).x;
p.y += v.get(i).y;
p.z+= 3;
if(p.x<0||p.x>1920||p.y<0||p.y>1080){
cloud.remove(i);
v.remove(i);
}
}
if(frameCount%2==0) addCloud2( +frameCount/60.0 );
for(int i=cloud2.size()-1;i>=0;i--){
PVector p = cloud2.get(i);
fill(#55D3FF,15);
noStroke();
ellipse(p.x,p.y,p.z,p.z);
p.x += v2.get(i).x;
p.y += v2.get(i).y;
p.z+= 3;
if(p.x<0||p.x>1920||p.y<0||p.y>1080){
cloud2.remove(i);
v2.remove(i);
}
}
}
為什麼這麼長呢,因為我新增了兩種顏色的星雲多用了一次資料結構
還不錯看哦
沒有留言:
張貼留言