level 14
这个要预判,要用到重力、距离、我方水平速度、垂直速度,抛射高度。
2020年06月08日 23点06分
2
level 14
简单弄了一个。
对象有四个,分别是子弹对象、炮台对象、敌人对象、控制器对象。
其中子弹对象有两个事件,分别是与敌人碰撞和离开房间。
其中与敌人碰撞代码如下:
instance_destroy()
with(other)
{
instance_destroy()
}
离开房间代码如下:
instance_destroy()
敌人对象无任何代码
控制器对象的作用是不停生成敌人,并在与炮台相同水平方向向左移动。有创建事件与时钟事件。
创建事件代码如下:
alarm[0]=50
时钟事件代码如下:
var temp;
temp=instance_create(640,320,object1)
temp.hspeed=-4
alarm[0]=50
最后是炮台对象,有一个全局鼠标左键按下事件,代码如下:
var temp1,temp2,t_s;
temp1=instance_create(x,y,object0);//创建子弹
temp1.vspeed=-10//设置垂直速度
temp1.gravity=0.5;//设置重力
if(instance_exists(object1))//如果存在敌人对象
{
temp2=instance_nearest(x,y,object1);//获取最近敌人
t_s=temp2.x-x//计算最近敌人与炮台距离,二者纵坐标一致
t_s=t_s-4*40;//距离减去40帧后敌人移动距离
temp1.hspeed=t_s/40;//设置水平速度
}
else temp1.hspeed=10//如果不存在敌人则设置一个固定的水平速度
这样,点击鼠标左键,就会发射一颗子弹,以抛物线移动,并在40帧后击中敌人。
2020年06月09日 02点06分
3
说一下,为什么vspeed=-10,子弹总飞行时间为40,到最高点时为20帧,这里设置飞行高度固定为100,所以100=v*20-重力*20^2(加速度公式)。因为重力为0.5,所以算出速度为10。
2020年06月09日 03点06分
level 14
不想输入代码的话,这里有一个GMK文件。
链接: pan点baidu点com/s/1HsHn3fxhlsP58rdJcf6j8g 提取码: 2ii4
2020年06月09日 02点06分
4
大概看懂了,谢谢大佬!
2020年06月09日 12点06分
level 9
2d 只要基础物理就行,3d 相对麻烦,不过如果你会基础的gmd3d处理 除了多了一个方向,基本一样,不考虑风向摩擦 反弹等等
2020年06月11日 12点06分
5