gamemaker函数中文帮助.docx

上传人:b****5 文档编号:6348160 上传时间:2023-01-05 格式:DOCX 页数:19 大小:27.97KB
下载 相关 举报
gamemaker函数中文帮助.docx_第1页
第1页 / 共19页
gamemaker函数中文帮助.docx_第2页
第2页 / 共19页
gamemaker函数中文帮助.docx_第3页
第3页 / 共19页
gamemaker函数中文帮助.docx_第4页
第4页 / 共19页
gamemaker函数中文帮助.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

gamemaker函数中文帮助.docx

《gamemaker函数中文帮助.docx》由会员分享,可在线阅读,更多相关《gamemaker函数中文帮助.docx(19页珍藏版)》请在冰豆网上搜索。

gamemaker函数中文帮助.docx

gamemaker函数中文帮助

常数

true等同于1.

false等同于0.

pi等同于3.1415...

实数函数

random(x)返回一个随机的实数,范围从0到x。

数值总小于x。

choose(val1,val2,val3,...)随机返回其中一个参数。

最多可以有16个参数。

abs(x)返回x的绝对值。

sign(x)返回x的符号(-1,0,或1)。

round(x)返回与x最接近的整数。

floor(x)返回比x小的最大整数。

ceil(x)返回比x大的最小整数。

frac(x)返回x的小数点以后的部分。

sqrt(x)返回x的开方。

x不能是负数。

sqr(x)返回x的平方。

power(x,n)返回x的n次方。

exp(x)返回x的冥方指数e。

ln(x)返回x的自然对数。

log2(x)返回x的2的对数。

log10(x)返回x的10的对数。

logn(n,x)返回x的n的对数。

sin(x)返回x的正弦(x单位为弧度)。

cos(x)返回x的余弦(x单位为弧度)。

tan(x)返回x的正切(x单位为弧度)。

arcsin(x)返回x的反正弦。

arccos(x)返回x的反余弦。

arctan(x)返回x的反正切。

arctan2(y,x)计算arctan(y/x),然后返回结果在正确象限内的角度值。

degtorad(x)转换角度到弧度。

radtodeg(x)转换弧度到角度。

min(val1,val2,val3,...)返回参数中的最小值。

最高支持16个参数。

必须全部是实数或全部是字符串。

max(val1,val2,val3,...)返回参数中的最大值。

最高支持16个参数。

必须全部是实数或全部是字符串。

mean(val1,val2,val3,...)返回所有参数的平均值。

最高支持16个参数。

必须全部是实数数值。

median(val1,val2,val3,...)返回参数的中间数(如果参数数目为偶数,则两个中间数中最小的那个作为返回值)。

最高支持16个参数。

必须全部是实数数值

point_distance(x1,y1,x2,y2)返回位置1(x1,y1)到位置2(x2,y2)的距离。

point_direction(x1,y1,x2,y2)返回从位置1(x1,y1)到位置2(x2,y2)的方向角度。

lengthdir_x(len,dir)返回指定长度及方向的矢量线在x轴上的投影长度。

lengthdir_y(len,dir)返回指定长度及方向的矢量线在y轴上的投影长度。

is_real(x)返回x是否为真实数值(否则就是字符串)。

is_string(x)返回x是否是一个字符串(否则就是一个真实数值)。

字符串处理函数

chr(val)返回字符串中包含参数指定的ASCII码字符的字符串。

ord(str)返回字符串中第一个字符的ASCII码。

real(str)将字符串转换为真实数值。

字符串可包含负号,小数点甚至是指数部分。

string(val)将真实数值转换为标准格式的字符串(整数时没有小数点位置,否则在小数点后留两位)。

string_format(val,tot,dec)将val以你自己的格式转换为字符串:

tot指定总的数字位置,dec指定小数点后有几位数字。

string_length(str)返回字符串中字符的个数。

string_pos(substr,str)返回字符串substr在字符串str中的位置(0代表完全不符)。

string_copy(str,index,count)返回字符串str的一部分,从index指定的位置开始,长度为count。

string_char_at(str,index)返回字符串str中索引为index的字符。

string_delete(str,index,count)返回删除了部分内容的字符串str,从index开始,长度为count。

string_insert(substr,str,index)返回在位置index处添加子串substr后的字符串str。

string_replace(str,substr,newstr)返回字符串str的一份拷贝,为字符串中子串substr第一次出现的地方开始被字符串newstr替换后的内容。

string_replace_all(str,substr,newstr)返回字符串str的一份拷贝,为字符串中子串substr所有出现的地方开始被字符串newstr替换后的内容。

string_count(substr,str)返回子串substr在字符串str中出现的次数。

string_lower(str)返回小写格式的字符串str。

string_upper(str)返回大写格式的字符串str。

string_repeat(str,count)返回由count个字符串str组成的新字符串str。

string_letters(str)返回只包含字母的字符串str。

string_digits(str)返回只包含数字的字符串str。

string_lettersdigits(str)返回包含字母和数字的字符串str。

以下为处理系统粘贴板内容的相关函数。

clipboard_has_text()返回粘贴板中是否存在任何文本。

clipboard_get_text()返回当前粘贴板内文本内容。

clipboard_set_text(str)将字符串str送入粘贴板。

日期及时间处理

在GameMaker中有许多函数是专门处理日期和时间的。

一个日期-时间格式是一组实数。

整数部分代表日期,最早到12/30/1899。

小数点后的部分代表一天之中的24小时。

现有有以下函数:

date_current_datetime()返回当前系统日期-时间。

date_current_date()返回当前系统日期(不包括时间)。

date_current_time()返回当前系统时间(不包括日期)。

date_create_datetime(year,month,day,hour,minute,second)建立一个指定的日期-时间数据。

date_create_date(year,month,day)建立一个指定的日期数据。

date_create_time(hour,minute,second)建立一个指定的时间数据。

date_valid_datetime(year,month,day,hour,minute,second)返回给定的日期-时间是否正确。

date_valid_date(year,month,day)返回给定的日期是否正确。

date_valid_time(hour,minute,second)返回给定的时间是否正确。

date_inc_year(date,amount)返回指定日期后amount年的新日期。

amount必须为整数date_inc_month(date,amount)返回指定日期后amount月的新日期。

amount必须为整数。

date_inc_week(date,amount)返回指定日期后amount星期的新日期。

amount必须为整数

date_inc_day(date,amount)返回指定日期后amount天的新日期。

amount必须为整数。

date_inc_hour(date,amount)返回指定日期后amount小时的新日期。

amount必须为整数。

date_inc_minute(date,amount)返回指定日期后amount分钟的新日期。

amount必须为整数。

date_inc_second(date,amount)返回指定日期后amount秒的新日期。

amount必须为整数。

date_get_year(date)返回date对应的年份。

date_get_month(date)返回date对应的月份。

date_get_week(date)返回date对应的星期。

date_get_day(date)返回date对应的天数。

date_get_hour(date)返回date对应的小时。

date_get_minute(date)返回date对应的分钟。

date_get_second(date)返回date对应的秒。

date_get_weekday(date)返回date对应一星期的哪一天。

date_get_day_of_year(date)返回date对应一年中的哪一天。

date_get_hour_of_year(date)返回date对应一年中的哪一小时。

date_get_minute_of_year(date)返回date对应一年中的哪一分钟。

date_get_second_of_year(date)返回date对应一年中的哪一秒。

date_year_span(date1,date2)返回两个日期date1和date2之间相隔多少年。

此函数只报告年数片断。

date_month_span(date1,date2)返回两个日期date1和date2之间相隔多少月。

此函数只报告月份片断。

date_week_span(date1,date2)返回两个日期date1和date2之间相隔多少星期。

此函数只报告星期片断。

date_day_span(date1,date2)返回两个日期date1和date2之间相隔多少天。

此函数只报告天数片断。

date_hour_span(date1,date2)返回两个日期date1和date2之间相隔多少小时。

此函数只报告小时片断。

date_minute_span(date1,date2)返回两个日期date1和date2之间相隔多少分钟。

此函数只报告分钟片断。

date_second_span(date1,date2)返回两个日期date1和date2之间相隔多少秒。

此函数只报告秒数片断。

date_compare_datetime(date1,date2)比较两个日期时间的大小,返回-1,0,1,分别代表前者小于,等于,大于后者。

date_compare_date(date1,date2)比较两个日期的大小,返回-1,0,1,分别代表前者小于,等于,大于后者。

date_compare_time(date1,date2)比较两个时间的大小,返回-1,0,1,分别代表前者小于,等于,大于后者。

date_date_of(date)返回指定日期-时间数据的日期部分,时间部分设定成0。

date_time_of(date)返回指定日期-时间数据的时间部分,日期部分设定成0。

date_datetime_string(date)按照给定的数据,返回系统默认的字符串格式日期-时间。

date_date_string(date)按照给定的数据,返回系统默认的字符串格式日期。

date_time_string(date)按照给定的数据,返回系统默认的字符串格式时间。

date_days_in_month(date)返回指定日期-时间所在月份的天数。

date_days_in_year(date)返回指定日期-时间所在年份的天数。

date_leap_year(date)返回指定日期-时间所在年份是否为闰年。

date_is_today(date)返回指定日期-时间是否为今天。

移动

很明显,游戏的一个重要方面就是对象实例的四处移动。

每个实例拥有两个内建的变量x和y用来指出实例的位置。

(更精确的说,它们显示的位置是精灵原点摆放的位置。

)(0,0)的位置在房间的最左上角。

你可以通过改变实例x和y变量的值来改变实例的位置。

你如果想要对象进行复杂运动,这是个可行的方法。

把有关的代码放在对象的并行(step)事件里。

如果对象以固定方向及恒速移动,实现起来就很简单。

每个对象实例都有一个水平速度(hspeed)和一个垂直速度(vspeed)。

两个速度都是以像素每步(pixelsperstep)为单位。

一个正的水平速度就是向右的运动,负的水平速度意味着向左的运动。

正的垂直速度是向下,负的垂直速度是向上。

所以你必须给这些变量初始化(比如在创建事件里)使对象实例有一个恒速。

自定义运动的方法和之前不同,使用了方向(direction)(0-359度),和速度(speed)(必须是非负数)。

你可以设定并读取这些变量来自定义一个任意运动。

(内部处理实际上是把值转换成hspeed和vspeed。

)当然还有阻力(friction)和重力(gravity)和重力方向(gravitydirction)供你使用。

最后要说的是函数motion_add(dir,speed)用来给现有对象增加速度。

完整来说,每个实例由以下变量和函数来处理它们的位置和运动:

x对象的x坐标.

y对象的y坐标.

xprevious对象以前的x坐标.

yprevious对象以前的y坐标.

xstart对象在房间里的初始x坐标.

ystart对象在房间里的初始y坐标.

hspeed速度的水平部分,即水平速度.

vspeed速度的垂直部分,即垂直速度.

direction对象当前方向(0-360度,逆时针,0=朝右).

speed对象当前速度(像素每步).

friction当前阻力(像素每步).

gravity当前重力(像素每步).

gravity_direction重力方向(270朝下).

motion_set(dir,speed)以参数(方向,速度)设定运动.

motion_add(dir,speed)以参数(方向,速度)对当前运动做改变.

这儿有大量可利用的函数帮助你定义你的运动:

place_free(x,y)返回实例在(x,y)位置是否与固体实例碰撞的值。

这个函数用来在实际移动到新位置前检测。

place_empty(x,y)返回实例在(x,y)位置是否与任何东西碰撞的值。

所以这个函数还把非固体实例加入计算范围。

place_meeting(x,y,obj)返回实例在(x,y)位置是否与对象(obj)碰撞的值。

与obj对象的实例遇到时,函数返回真(true)。

也可以用实例名做obj参数,实例名都意味着是对象的一个实例。

place_snapped(hsnap,vsnap)返回实例是否与网格对齐的值。

//hsnap水平网格,vsnap垂直网格

move_random(hsnap,vsnap)移动实例到一个随机空闲并且是网格的位置,和其对应的动作效果一样。

move_snap(hsnap,vsnap)将实例对齐网格,和其对应的动作效果一样。

move_wrap(hor,vert,margin)离开房间到另一边时卷动实例。

参数hor为是否水平卷动(1或0)参数vert为是否垂直卷动(1或0)。

参数margin为卷动前离原点多远时实例必须离开房间。

等于围绕房间的一圈留白。

这个函数在离开事件(outsideevent)中使用非常具有代表性。

move_towards_point(x,y,sp)以速度(sp)朝(x,y)位置移动实例。

move_bounce_solid(adv)遇到固体实例反弹,和其对应的动作效果一样。

参数adv(1或0)为是否使用高级反弹,高级反弹将倾斜面加入计算范围。

move_bounce_all(adv)遇到所有实例反弹,不单单对固体反弹。

move_contact_solid(dir,maxdist)朝某方向移动实例直到接触固体对象。

如果在当前位置没有碰撞,实例在碰撞发生前将不停的移动。

如果当前位置已经发生碰撞了,实例就不再移动。

你可以指定移动的最大速(距离未定时可以使用负数)//dir设定方向,maxdist设定速度

move_contact_all(dir,maxdist)和上一个函数类似,不过这次接触到任何对象时都会停止,不单是固体对象。

move_outside_solid(dir,maxdist)朝某方向移动实例直到离开固体对象。

如果在当前位

置没有碰撞,实例不移动。

你可以指定移动的最大速(距离未定时可以使用负数)//用于分开重叠的实例

move_outside_all(dir,maxdist)和上一个函数类似,不过这次是离开任何对象时都会停止,不单是固体对象。

distance_to_point(x,y)返回当前实例的碰撞盒离(x,y)的距离。

distance_to_object(obj)返回实例离最近的对象(obj)的距离。

position_empty(x,y)返回在(x,y)位置是否有任何实例的布尔值。

position_meeting(x,y,obj)返回(x,y)位置是否有实例obj的布尔值。

参数obj可以是对象,实例名,或是其他关键字等等

路径

在GameMaker里你可以定义路径并且命令实例跟随路径。

尽管你可以使用动作库,变量和函数可以使你更灵活的运用:

path_start(path,speed,endaction,absolute)为当前实例开始一段路径。

参数path是你想开始的路径名。

参数speed是跟随路径的速度。

负的speed意味着实例沿着路径往回移动。

参数edaction是设定当实例到达路径的终点时发生的事件。

有以下几个值可供使用:

0:

停止路径

1:

从开始点继续(如果路径没有闭合,直接跳到开始点)

2:

从当前点继续

3:

反转路径,改变速度的符号

参数absolute应该是true或是false(1或0)。

设为true时和路径是绝对的关系(absolute)。

设为false时路径和实例的当前位置是相关的关系(relative)为了更精确地设定,如果speed是正的,当前位置就是路径的开始点,路径沿着当前位置而行。

speed为负值时,当前位置就是路径的终点,路径沿着当前位置往后移动。

path_end()当前实例结束跟随路径。

path_index*当前实例跟随路径的索引。

你不可以直接改变它,必须使用上面的函数。

path_position当前路径的位置。

值为0时在路径的开始位置。

值为1时在路径的结束位置。

值必须在0到1之间。

path_positionprevious当前路径的前一个位置。

可以使用碰撞事件(collisionevents)里的例子来设置在路径上位置使它回到前一个位置。

path_speed设置跟随路径的速度(像素每步)。

负值时向后移动。

path_orientation路径处理时的方位(逆时针)设定。

值0时为正常方向。

path_scale缩放路径。

增加值使路径变大。

1是默认值。

path_endaction路径结束时必须执行的行为。

可以使用最上面的函数介绍的值。

运动设计

运动设计帮助你在避免与另一实例(比如:

墙)碰撞的情况下将某实例从给定位置移动到另一位置。

运动设计是一个有难度的项目。

几乎不可能给出一些能够在任何情况下正常运作的普通函数。

同时,计算碰撞运动非常耗费系统资源。

所以使用这些函数时必须非常小心仔细。

当你使用以下任一函数时请将这些建议记到心里。

GameMaker提供了一些不同形式的运动计划。

最简单的形式允许一个实例朝某特定目标方向步进,可能的话尽量走直线但是如果有要求的话可以取不同的方向。

这些函数应当在实例的并行事件(stepevent)中使用。

对应的运动计划动作库也是可用的:

mp_linear_step(x,y,stepsize,checkall)这个函数作用为让实例朝指定位置(x,y)直线步进。

每一步的大小由参数stepsize设置。

如果实例已经到位,实例不再移动。

如果参数checkall为true

(1),实例遇到任意对象的实例都不会停止。

如果为false(0),实例碰撞到另一固体实例时就会停止。

注意这个函数遇到障碍时不会试着绕路。

它只会简单的停止。

函数返回值为是否到达目标位置。

mp_linear_step_object(x,y,stepsize,obj)除了参数obj实例为障碍,其他效果同上。

参数obj可以是对象或是实例名。

mp_potential_step(x,y,stepsize,checkall)和先前的函数类似,这个函数也是让实例朝指定位置步进。

不同处是这个函数会试着绕过障碍物。

当实例快撞上某一固体实例(或任何实例,checkall为true时)时,会改变运动方向来避开实例并且绕开它。

这个方法不能保证有效,但是在大部分简单应用中会非常有效的让实例朝目标移动。

函数返回值为是否到达目标位置。

mp_potential_step_object(x,y,stepsize,obj)除了参数obj实例为障碍物,其他效果同上。

参数obj可以是对象或是实例名。

mp_potential_settings(maxrot,rotstep,ahead,onspot)先前的函数利用的一些参数可

以使用这个函数改变。

以下方法都有全局性。

首先试着朝目标直线移动。

可以使用参数ahead(默认值为3)设置前面有多少步。

减少这个值意味着实例将在延后开始改变方向。

增加这个值意味着提前开始改变方向。

如果检测到将要碰撞,实例会开始朝向最佳方向,偏右或是偏左。

根据参数rotstep(默认值为10)的大小决定在多少步中改变朝向。

减少rotstep的值会使得实例有更多移动的可能性但速度也会更慢。

参数maxrot解释起来有一点难度。

实例有一个当前方向。

参数maxrot(默认值为30)为在一步里面允许改变当前方向的最大值。

所以说即使实例可以直线移动到目标,只要不超过改变方向的最大值,它就会这样执行。

如果你把maxrot设得很大,实例就可以在每一步都改变很多方向。

这样可以使它更简单的寻找一段短路径,但同时整个路径会变得非常丑陋(路线歪七歪八的…)。

如果把值设得很小,路线就会很平滑但同时它可能会绕很远的路费很多时间(有时候甚至找不到到目标的路)。

没有创建步时,实例的行为会建立在参数onspot上。

如果onspot值为true(或1,为默认值),实例会根据maxrot的大小在自己的位置上旋转。

如果值为false(或0)实例就不再移动。

如果实例为车辆时,设为false比较好,但同时会减少寻路成功的机会。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1