GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

190 信息 1082 成员
游戏开发工具 GameMaker Studio 2 的讨论小组

GMS常用脚本介绍(3&4&5)

顺子 2017-09-15

刚发现介绍脚本的这最后的集合一直留在草稿里没发……抓紧发了orz

Wrap()

Wrap这个脚本是用来做什么的呢?先来看一下这个GIF图其实就是把传入的一个值约束在指定的范围内来回递增/减,并且钟摆循环。

Image title


代码正文

///@description Wrap(value,min,max)
///@function Wrap
///@param value
///@param min
///@param max
//returns the value wrapped

var _val = argument[0];
var _max = argument[1];
var _min = argument[2];

if(_val mod 1==0 )
{
    while(_val > _max) || _val < _min)
    {
        if(_val > _max)
        {
            _val = _min + _val - _max -1 ;
        }
        else if (_val < _min)
        {
            _val = _max + _val - _min + 1 ;
        }
        else
            _val = _val ;
    }
    return(_val);
 }
 else
 {
     var _old = argument[0] + 1 ;
     while(_val != _old)
     {
         _old = _val ;
         if (_val < _min)
                _val = _max - (_min - _val) ;
        else if(_val > _max)
                _val = _min + (_val - _max) ;
        else
                _val = _val ;
     }
     return(_val);
 }

JumpInDirection()

下面这个脚本其实很简单,就是在你指定跳跃的角度和距离后,即可让对象朝着指定的方向移动对应距离的脚本,而脚本中的那两句代码在HeartBeast的横版射击游戏教程中也有使用,就是把官方内置的方法"lengthdir_x"和"lengthdir_y"组合使用,这个脚本只是单纯简化了操作。

代码正文

/// @description JumpInDirection(length,direction)
/// @param length
/// @param direction
var len = argument0 ;
var dir = argument1;

x += lengthdir_x(len,dir);
y += lengthdir_y(len,dir);

Chance()

这个脚本更简单,只有一行,理论上来说也完全可以直接把代码写到需要实用的地方去,但是通过脚本可以使得可读性更强,这个脚本的目的是计算概率,下面举个例子

if Chance(0.7)
{
    //写在这里的代码就有70%的概率被触发
}

在参数里只要填入0~1的小数即可直接设定触发代码的概率,从而实现触发概率的功能。而实现机制则异常简单,稍加思考应该就能明白:)

代码正文

return argument0 > random(1) ;
(转发自:原日志地址

近期喜欢的会员

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册