如何判断一个物体是否在另一个物体的距离内?

时间:2016-05-22 10:26:20

标签: game-maker gml

我有一个角色对象和一个粘液对象。角色可以移动,粘液使用下面的代码移动到播放器。

(player_obj是角色)

phy_position_x += sign(player_obj.x - x) * 0.2;
phy_position_y += sign(player_obj.y - y) * 0.2;

我怎么做才能让粘液在所有距离都不会移动到角色?如何设置粘液开始移动到角色的半径?

是否有if语句:

if slime_obj.x < 20 to player.obj.x and slime_obj.y < 20 to player_obj.y {}

1 个答案:

答案 0 :(得分:1)

要做到这一点非常简单,您只需使用the distance formula计算距离。您可以在GML中使用if (point_distance(x, y, obj_player.x, obj_player.y) < r) { //Move towards the player } 功能。它看起来像这样:

///point_distance_squared(x1, y1, x2, y2)
var x1 = argument[0];
var y1 = argument[1];
var x2 = argument[2];
var y2 = argument[3];
return (pow(pow(x2, 2) - pow(x1, 2), 2) + pow(pow(y2, 2) - pow(y1, 2), 2));

哪里&#39; r&#39;是你希望敌人跟随玩家的圆的半径。

有关详细信息,请参阅此处:http://docs.yoyogames.com/source/dadiospice/002_reference/maths/vector%20functions/point_distance.html

尽管如此(计算CPU)计算起来相当昂贵,因为它使用平方根函数。虽然对此的补救措施相当简单。你可以制作以下脚本(我把它命名为point_distance_squared,但你可以随意命名):

if (point_distance_squared(x, y, obj_player.x, obj_player.y) < (r * r)) {
    //Mode towards the player
}

然后代码几乎相同,除了你需要对半径进行平方,它看起来像这样:

    <center>

<div class="large-12 columns">
            <nav class="pagination">
            <ul>
                <li><a href="" rel="nofollow">&laquo; First</a></li>
                <li><a href="" rel="nofollow">&lsaquo; Back</a></li>
                <li>1</li>
                <li><a href="" rel="nofollow">2</a></li>
                <li><a href="" rel="nofollow">3</a></li>
                <li><a href="" rel="nofollow">4</a></li>
                <li><a href="" rel="nofollow">5</a></li>
                <li><a href="" rel="nofollow">6</a></li>
                <li><a href="" rel="nofollow">7</a></li>
                <li><a href="" rel="nofollow">8</a></li>
                <li><a href="" rel="nofollow">9</a></li>
                <li><a href="" rel="nofollow">10</a></li>
                <li><a href="" rel="nofollow">11</a></li>
                <li><a href="" rel="nofollow">12</a></li>
                <li><a href="" rel="nofollow">13</a></li>
                <li><a href="" rel="nofollow">14</a></li>
                <li><a href="" rel="nofollow">15</a></li>
                <li> . . . </li>
                <li><a href="" rel="nofollow">94</a></li>
                <li><a href="" rel="nofollow">95</a></li>
                <li><a href="" rel="nofollow">96</a></li>
                <li><a href="" rel="nofollow">Next &rsaquo;</a></li>
                <li><a href="" rel="nofollow">Last &raquo;</a></li>
            </ul>
        </nav>
  </div>

  <div class="large-12 columns">
  <div id="footer">
        &copy; 2013 - <a href="http://allvixen.com/">allvixen.com</a>
        </div>

        </div>
</center>