第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何找到移動物體與障礙物的完美碰撞

如何找到移動物體與障礙物的完美碰撞

慕勒3428872 2021-08-05 15:06:13
我有兩個精靈:一個機器人精靈和一個障礙精靈。我正在使用 mask.overlap 來確定是否存在重疊以防止機器人進入障礙物區(qū)域(它起到阻擋障礙物的作用)。下面是運動評估代碼的一部分。它會測試移動是否會導(dǎo)致碰撞:if pressed_keys[pygame.K_s]:    temp_position = [robot.rect.x, robot.rect.y]    temp_position[1] += speed    offset_x = temp_position[0] - obstacle.rect.x    offset_y = temp_position[1] - obstacle.rect.y    overlap = obstacle.mask.overlap(robot.mask, (offset_x, offset_y))    if overlap is None:        robot.rect.y += speed    else:        # adjust the speed to make the objects perfectly collide此代碼有效。如果移動會導(dǎo)致碰撞,則它會阻止機器人移動。問題對于高速,代碼會阻止其正常移動,但會在機器人和障礙物之間留下視覺間隙。例如:如果速度為 30,兩個障礙物相距 20 像素,則代碼將阻止移動,因為會導(dǎo)致碰撞。但留下了 20 像素的差距。目標如果發(fā)生碰撞,將速度調(diào)整到剩余像素距離(如示例中的 20 像素),以便機器人和障礙物完美碰撞。機器人不能移動 30,但他可以移動 20。我如何計算剩余距離?
查看完整描述

3 回答

?
慕仙森

TA貢獻1827條經(jīng)驗 獲得超8個贊

您可以通過二分搜索輕松獲得精確(如果不是精確)解決方案:一旦在整個步驟結(jié)束時檢測到碰撞,請嘗試半步,然后是四分之一或四分之三,依此類推。這將碰撞測試視為移動距離的布爾值函數(shù)并尋找“零”(實際上是從未命中到命中的過渡)。

請注意,這無助于解決問題剪裁通過薄壁或角(在最初的碰撞測試未能檢測到障礙物時),并用復(fù)雜的障礙,會發(fā)現(xiàn)一個任意邊緣(不一定是第一個)停止在。


查看完整回答
反對 回復(fù) 2021-08-05
?
侃侃爾雅

TA貢獻1801條經(jīng)驗 獲得超16個贊

我決定采用 skrx 在他的評論中建議的方法:基本上備份 1px 直到不再發(fā)生碰撞。


if pressed_keys[pygame.K_s]:

    temp_position = [robot.rect.x, robot.rect.y]

    temp_position[1] += speed

    offset_x = temp_position[0] - obstacle.rect.x

    offset_y = temp_position[1] - obstacle.rect.y


    overlap = obstacle.mask.overlap(robot.mask, (offset_x, offset_y))

    if overlap is None:

        robot.rect.y += speed

    else:

        for step_speed in range(1, speed - 1):

            collision[1] -= 1

            offset_x = collision[0] - obstacle.rect.x

            offset_y = collision[1] - obstacle.rect.y

            overlap_adj = obstacle.mask.overlap(robot.mask, (offset_x, offset_y))

            if overlap_adj is None:

                robot.rect.y += (speed - step_speed)

                break

這是一個有點笨拙的方法,但它會滿足我現(xiàn)在的需要并保持矢量數(shù)學在海灣。對于那些正在尋找使用歸一化向量等解決此問題的正確方法的人,我建議使用提供的答案 skrx。我可能會回到這個問題并在將來更新它。但就目前而言,這將為用戶提供關(guān)于如何進行完美碰撞的幾個選項。


查看完整回答
反對 回復(fù) 2021-08-05
  • 3 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號