一个简易的弹幕脚本系统
http://pan.baidu.com/s/157xLG用的引擎是libtcc
能够使用
这样的脚本生成
这样的弹幕
只实现了极坐标(对,,,,,逻辑比起上次还没增加一丝一毫。。)
除此之外还有什么需要的功能请大家给我点意见。。。
我最近得去研究buffer object去了。。 我那个是参数方程呢。。。
目前来看应该可以读取脚本。。。
但是依然蛋疼啊((( 本帖最后由 song_5007 于 2015-7-16 11:00 编辑
#include "danmu.h"
#include "math.h"
void* danmu=NULL;
void create(void* lp)
{
danmu=lp;
static long timeProc = 200;
static num=0;
if (getPassed() - timeProc >=1800)
{
timeProc = getPassed();
for(int i=0;i<6;i++)
{
XMFLOAT2 pos={184,125};
polar *p=(polar*)(getLpMem(init(lp,pos,1,1)));
if(p)
{
p->o=XM_2PI/6*i + num*XM_2PI/16.0f;
}
}
num++;
}
}
int safechk(XMFLOAT2 pos)
{
if (pos.x>468 || pos.x<-100 || pos.y>440 || pos.y<-40)
return 1;
return 0;
}
void secCre(XMFLOAT2 pos)
{
for(int i=0;i<16;i++)
{
polar *p=(polar*)(getLpMem(init(danmu,pos,1,2)));
if(p)
{
p->o=XM_2PI/16*i;
}
}
}
int proc(void* lp,int catalogue)
{
XMFLOAT2 *pos=getLpPos(lp);
XMFLOAT2 *centre = getLpCentre(lp);
if(catalogue==1)
{
polar *p=(polar*)(getLpMem(lp));
p->r+=1.0f;
XMFLOAT2 tp={p->r*cos(p->o),p->r*sin(p->o)};
*pos=*centre;
pos->x+=tp.x;
pos->y+=tp.y;
if(getMyPassed(lp)>2000)
{
secCre(*pos);
return -1;
}
}else
{
polar *p=(polar*)(getLpMem(lp));
if(getMyPassed(lp)>2600)
{
return -1;
}else
if(getMyPassed(lp)>1000)
{
p->rv+=0.1f;
p->r += p->rv;
}else
if(getMyPassed(lp)>500)
{
p->r+=0.1f;
}else
{
p->r+=1.0f;
}
XMFLOAT2 tp={p->r*cos(p->o),p->r*sin(p->o)};
*pos=*centre;
pos->x+=tp.x;
pos->y+=tp.y;
}
return 0;
}
虽然学过编程。。。还从来没试过编弹幕、搞下来学习一发 libtcc看起来有点厉害 7.1更新了一下 分离了逻辑与渲染
优化了GPU的访问
现在2-3w弹幕应该没问题了。
最近考试大约不会再有更新{:16_452:} 虽然感觉很简易的。。。但是我依然还是看不懂= = {:16_440:}0.9版本出炉了,这次可是重大更新,可以实现所有(非激光)弹幕了哟!
更新日志等放假补,就先这样了。
下一次估计就是最后的更新了,我会同时附上一份使用文档。
假设再有更新的话,估计已经是我正式开始写stg的时候了。
页:
[1]
2