GMS2 技術メモ 1
敵同士の衝突
if(followwing){
var _newX = x+inputX*moveSpeed;
var _newY = y+inputY*moveSpeed;
if(place_meeting(_newX,_newY, o_enemy_parent)){
inputX = 0;
inputY = 0;
}
}
------------------------
インスタンスが上下に移動する
create event
{
move_time = 0;
move_timer = 60;
}
y += move_amount;
if(move_timer++ > move_maxtimer){
move_timer = 0;
move_amount *= -1;
special_attack_count = true;
}
------------------------
水平 プレイヤーの動き
var move = right - left;
hsp = move * walksp;
------------------------
対面
if(hsp != 0){
}
------------------------
衝突判定の描画
draw_self();
draw_set_alpha(0.3);
draw_rectangle_color(bbox_left,bbox_top,bbox_right,bbox_bottom,c_red,c_red,c_red,c_red,false);
draw_set_alpha(1);
------------------------
プレイヤー4方向の動き
hsp += (right - left) * walksp;
vsp += (down - up ) * walksp;
vsp = lerp(vsp,0,drag);
if(abs(hsp) <= 0.1) { hsp = 0; }
if(abs(vsp) <= 0.1) { vsp = 0; }
if(hsp != 0){ facing = sign(hsp); }
if(vsp != 0){ vsp_walk = sign(vsp); }
hsp = min(abs(hsp),walksp)*facing;
vsp = min(abs(vsp),walksp)*vsp_walk;
image_xscale = facing;
x += hsp;
y += vsp;
ゲーム停止
(create event)
global.gamepause = false;
(end step event)
if(keyboard_check_pressed(vk_escape)){
global.gamepause = !global.gamepause;
if(global.gamepause){
with(all){
gamePauseImageSpeed = image_speed;
image_speed = 0;
hsp = 0;
vsp = 0;
}
}else{
with(all){
image_speed = gamePauseImageSpeed;
}
}
}
プレイヤー発見までの距離
var detect_player_dis = 120;
if(distance_to_object(o_player) < detect_player_dis)
and sign(o_player.x-x) = facing {
state = (enemy);
}