路径与碰撞的研究
赵品尉 发表于 2016-01-10 06:45:24 932

[align=center]路径与碰撞的研究 [/align]object: obj_player
Create:
path_start(pth_1,3,1,1)
Collision<obj_wall>:
//
Glob Left Pressed:
path_position = 0.5
Draw:
draw_self()
draw_text(20,20,"path_position:"+string(path_position))
object: obj_wall
Step:
if(keyboard_check(vk_left))
{
x-=5
}
if(keyboard_check(vk_right))
{
x+=5
}
if(keyboard_check(vk_up))
{
y-=5
}
if(keyboard_check(vk_down))
{
y+=5
}
运行后移动墙,对象obj_player,墙也卡住不能移动了,当然鼠标左键事件还是能够运行的。自己试试。
[attach]1922[/attach]

改进:
object: obj_player
Create:
path_start(pth_1,3,1,1) //启动路径
path_isruning=true //路径是否启动,这是自己定义的变量
path_temp_point = 0 //临时路径点,这是自己定义的变量,保存路径位置的
Step:
if (path_isruning==false) //如果路径没运行则:
{
if (collision_circle(x,y,30,obj_wall,0,1)==noone) //在以自身为中心30像素范围内,没发现墙。
{
path_start(pth_1,3,1,1) //启动路径
path_position = path_temp_point //把对象的位置设置为:对象与墙碰撞前一个位置
path_isruning = true //路径运行为true
}
};
Collision<obj_wall>:
path_position = path_positionprevious //与墙碰撞了,就把对象设置为:碰撞发生的前一位置
path_temp_point = path_positionprevious //把碰撞发生的前一位置保存在path_temp_point变量中
path_end() //结束路径
path_isruning = false; //路径正在运行设为false
Draw Event:
draw_self()
draw_text(20,20,"path_position:"+string(path_position))

object: obj_wall
Step:
if(keyboard_check(vk_left))
{
x-=5
}
if(keyboard_check(vk_right))
{
x+=5
}
if(keyboard_check(vk_up))
{
y-=5
}
if(keyboard_check(vk_down))
{
y+=5
}
[attach]1923[/attach]

更多精彩请在群下载电子书: GameMakerStudio超入门(卷1)



最新回复 (4)
  • 大头斌 发表于 2016-01-11 09:44:38
    0 2
    赞啊!!!学习学习!
  • test 发表于 2016-01-12 01:14:19
    0 3
    哟,不错,去看看
  • MikuScarlet 发表于 2016-01-24 01:41:34
    0 4
    能写出会绕路走的吗?