用 Codea 绘制的线条飞鸟动画代码

用 Codea 绘制的线条飞鸟动画代码,第1张

概述使用说明:先在 Codea 内新建一个空白项目,把该文件内容拷贝到 main 标签页内,即可运行 使用了 Codea 提供的音效包(需要在 Codea 中点击下载) 截图: 代码如下: -- main-- Use this function to perform your initial setupfunction setup() displayMode(FULLSCREEN) 使用说明:先在 Codea 内新建一个空白项目,把该文件内容拷贝到 main 标签页内,即可运行


使用了 Codea 提供的音效包(需要在 Codea 中点击下载)


截图:



代码如下:

-- main-- Use this function to perform your initial setupfunction setup()    displayMode(FulLSCREEN)    x = WIDTH/2    y = HEIGHT/2    img = sprite("Cargo Bot:Starry Background")    -- 第一只 mesh 鸟 -- The 1st mesh bird      myMeshBird1 = mesh()        -- 第二只 mesh 鸟 -- The 2nd mesh bird       myMeshBird2 = mesh()    myMeshBird2.texCoords = {vec2(0,0),vec2(0,1),vec2(1,0)}    myMeshBird2.texture = img    -- 第三只 mesh 鸟 -- The 3rd mesh bird        myMeshBird3 = mesh()    -- 用于控制循环的变量 -- variable for loop control        i,j = 0,0    k = 1    m,n = 1000,1    a,b = 255,1           parameter.integer("i",150,0)    parameter.integer("j",0)       parameter.integer("k",-1,1,1)    parameter.integer("m",2000,1000)      parameter.integer("n",-5,5,1)    parameter.integer("a",255,255)      parameter.integer("b",1)            parameter.integer("l1",100,300,200)    parameter.integer("h1",200)        parameter.integer("l2",10,200,60)    parameter.integer("h2",10)        -- 三只对象实例鸟 -- Three object instance birds    myBird1 = Bird(x,y)    myBird2 = Bird(x+50,y)    myBird3 = Bird(x,y)end-- This function gets called once every framefunction draw()        -- 用来设置颜色渐变效果 -- color Alpha control        -- Alpha channel has a maximum of 255    local Alpha = math.min(elapsedtime * 20%255,255)     -- Set tint using tint(grey,Alpha)    tint(255,Alpha)                                      -- 用 tint() 函数控制色彩透明度变化 -- Use tint()    if Alpha == 255 then         tint(0,Alpha)    elseif Alpha == 50 then         tint(255,Alpha)     end                -- 控制翅膀坐标变化 -- control change of wings' coords      -- 若 i 达到最大值,则把步长 k 设置为 -1,i + k 值会递减 -- when i become max,set step k to -1,i+k will decrease    -- 若 i 达到最小值,则把步长 k 设置为 1,i + k 值会递增  -- when i become min,set step k to 1,i+k will increase     -- 当 i 最大时调用声音,以保证声音和动作同步   -- load sound while i become max,to make sure sound and motion synchronize    if i == 150 then        k = -1        sound("A Hero's Quest:Walk 2 (Short)")    elseif i == 0 then         k = 1    end        -- 控制缩放 -- contrl scale     if m == 1500 then n = -1 elseif m == 0 then n = 1 end        -- 用变量 a,b 直接控制色彩透明度变化 -- use variable a,b to control change of color's Alpha directly    if a == 255 then b = -1 elseif a == 50 then b = 1 end        -- 开始递增或递减 -- start increase or decrease    i = i + 5 * k    j = j + 8 * k    m = m + 2 * n    a = a + b         -- 设置背景色 -- set background color     background(11,11,86)        -- 设置背景参照物 -- set background object     pushStyle()    pushmatrix()    -- scale(m/500,m/500)    -- translate(-m,m)    fill(255,Alpha)    stroke(255,118,Alpha)    ellipse(500,1250-m,m-350)    popMatrix()    popStyle()        -- 用于三只 mesh 鸟的颜色 -- colors of three mesh birds     mycolor1 = color(255,Alpha)    mycolor2 = color(79,a)    mycolor3 = color(79,2,a)            -- 构成飞鸟线条的顶点坐标 -- vertex coords of bird line     -- vec2 向量 p1(0,0) 为中心点提供坐标 -- vec(0,0) is the central point     p1 = vec2(0,0)    -- 组成右边翅膀的顶点 -- vertices of right wing     -- p2,p3 = vec2(200+i/8,-150+2*j),vec2(60-i/3,10+j/3)    p2,p3 = vec2(l1+i/8,vec2(l2-i/3,h2+j/3)    -- 组成左边翅膀的顶点 -- vertices of left wing     -- p4,p5 = vec2(-200-i/8,vec2(-60+i/3,10+j/3)    p4,10+j/3)        -- 用这些坐标设置 mesh 的顶点 -- set mesh vertices     myMeshBird1.vertices = {p1,p2,p3,p1,p4,p5}    myMeshBird2.vertices = {p1,p5}        myMeshBird3.vertices = {p1,p5}                -- 平移     translate(3*x/4,3*y/4)        -- 整体循环缩放全部飞鸟比例,产生鸟群距离变化的感觉 -- total birds loop scale,to feel birds distance changing     scale(m/1500)        -- 直接用 line() 函数画的飞鸟 -- use line() draw bird directly    pushmatrix()         pushStyle()    translate(x/2,y)       scale(3)    stroke(0,39,255)    strokeWIDth(5)    -- 右边翅膀线条 -- lines of right wing     line(p1[1],p1[2],p2[1],p2[2])    line(p1[1],p3[1],p3[2])    line(p3[1],p3[2],p2[2])    -- 左边翅膀线条 -- lines of right wing    line(p1[1],p4[1],p4[2])    line(p1[1],p5[1],p5[2])    line(p4[1],p4[2],p5[2])        -- 用文字标出飞鸟的编号 -- print bird's No.    fill(0,51,255)    text("零号鸟",p1[1],p1[2])    text("1",p1[2])           popStyle()    popMatrix()        -- 用 class Bird 绘制的对象实例鸟 -- object instance bird drawing with class Bird     pushmatrix()    pushStyle()    -- myBird.deltaX = myBird.deltaX + 5*k    -- myBird.deltaY = myBird.deltaY + 5*k    rotate(m)    scale(0.2)    myBird1:setcolors(mycolor)    myBird1:draw()       popStyle()     popMatrix()    -- 用 class Bird 绘制的对象实例鸟 -- object instance bird drawing with class Bird     pushmatrix()    pushStyle()    rotate(-m)    scale(0.3)    myBird2:setcolors(mycolor)    myBird2:draw()       popStyle()     popMatrix()    -- 用 class Bird 绘制的对象实例鸟 -- object instance bird drawing with class Bird     pushmatrix()    pushStyle()    rotate(-m)    scale(0.3)    myBird3:setcolors(mycolor2)    myBird3:draw()       popStyle()     popMatrix()        -- 用 mesh 绘制的一号飞鸟 -- No.1 mesh bird     pushmatrix()    pushStyle()    translate(-x/4,-y/2)    scale(.8)    myMeshBird1:setcolors(mycolor1)    -- myMeshBird1.shader.time = elapsedtime*5    myMeshBird1:draw()    -- 用文字标出飞鸟的编号  -- print bird's No.          fill(173,255)    text("一号鸟",p1[2])        popStyle()    popMatrix()        -- 用 mesh 绘制的二号飞鸟 -- No.1 mesh bird     pushmatrix()    pushStyle()    translate(300,200)    scale(.5)    myMeshBird2:setcolors(mycolor2)    myMeshBird2:draw()    -- 用文字标出飞鸟的编号  -- print bird's No.     fill(63,218,26,255)    text("二号鸟",p1[2])    text("2",p1[2])            popStyle()        popMatrix()        -- 用 mesh 绘制的三号飞鸟 -- No.1 mesh bird     pushmatrix()    pushStyle()    translate(30,80)    scale(2)    myMeshBird3:setcolors(mycolor3)    myMeshBird3:draw()    -- 用文字标出飞鸟的编号  -- print bird's No.       fill(218,25,197,255)    text("三号鸟",p1[2])    text("3",p1[2])            popStyle()        popMatrix()        end-- Bird classBird = class()function Bird:init(x,y)    -- you can accept and set parameters here    -- 最初的位置坐标 -- bird's position    self.x = x    self.y = y    -- 最初的坐标偏移量 -- bird's offset     self.deltaX = 0    self.deltaY = 0         self.i1,self.j1 = 0,0    self.k1 = 1               flag = mesh()           mycolor = color(55,172,255)    Bird:setcolors(mycolor) endfunction Bird:draw()    -- Codea does not automatically call this method        if self.i1 == 150 then        self.k1 = -1    elseif i == 0 then         self.k1 = 1    end        self.i1 = self.i1 + 5 * self.k1    self.j1 = self.j1 + 8 * self.k1            self.deltaX = self.i1    self.deltaY = self.j1        flag.vertices = {        vec2(self.x,self.y),vec2(self.x + 200 - self.deltaX/8,self.y - 150 + self.deltaY * 2),vec2(self.x + 60 - self.deltaX/3,self.y + 10+self.deltaY/3),vec2(self.x,vec2(self.x - 200 + self.deltaX/8,vec2(self.x - 60 + self.deltaX/3,self.y + 10 + self.deltaY/3),}    -- Bird:setcolors(mycolor)    fill(24,201,255)    text("对象鸟",self.x,self.y)    text("Object Instance Bird",self.y)            flag:draw()    endfunction Bird:setcolors(colors)    flag:setcolors(colors)endfunction Bird:touched(touch)    -- Codea does not automatically call this methodend
总结

以上是内存溢出为你收集整理的用 Codea 绘制线条飞鸟动画代码全部内容,希望文章能够帮你解决用 Codea 绘制的线条飞鸟动画代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088634.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存