gpt4 book ai didi

javascript - 使实体从 ImpactJS 中的另一个实体反弹

转载 作者:行者123 更新时间:2023-11-29 10:50:06 24 4
gpt4 key购买 nike

我有一个受重力控制的玩家实体,我在屏幕底部有另一个四处移动的实体。

当我下落的玩家实体撞到底部的实体时,我希望它能弹开。

理想情况下,我想使用播放器实体的 .bounciness 属性。

最佳答案

您希望底部实体包含以下属性:

checkAgainst: ig.Entity.TYPE.A, // player entity type
collides: ig.Entity.COLLIDES.ACTIVE

然后您希望 bottomEntity 的 check() 方法在与玩家实体碰撞时反转玩家实体的速度。

check: function(other) {
other.vel.y -= 100; // you could also use other.accel.y
}

此外,如果您愿意,还可以处理碰撞的偏转 Angular (类似于打砖 block 游戏):

如果玩家击中中心,您希望它直接向上。如果它击中右半边,你希望它向右走;如果它击中左侧,您希望它向左移动。

所以找到玩家击中底部实体的位置,并找到它相对于实体末端的 Angular 。

var playerPos = player.pos.x - bottomEntity.pos.x;
var relativePos = ( bottomEntity.size.x - playerPos);
var angle = relativePos * ( Math.PI / bottomEntity.size.x ); // translate to radians - this finds the number of radians per bottom entity pixel

获得 Angular 后,利用它的cos 来获取方向。将方向乘以底部实体的速度,就得到了底部实体的新速度。

var newVel = Math.cos( angle ) * bottomEntity.vel.x;

那么您的check() 方法将如下所示:

check: function(other) {
var playerPos = other.pos.x - bottomEntity.pos.x;
var relativePos = ( bottomEntity.size.x - playerPos);
var angle = relativePos * ( Math.PI / bottomEntity.size.x ); // translate to radians - this finds the number of radians per bottom entity pixel
other.vel.y -= newVel;
}

关于javascript - 使实体从 ImpactJS 中的另一个实体反弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com