파이썬에서 곡률 애니메이션 만들기

루크 카 치제

나는 지금 2 주 동안 하나의 문제에 직면하고 있으며, 어디서부터 시작해도 여전히 그것을 파악할 수 없습니다. 문제는 두 점이 서로 쫓는 곡률 애니메이션을 만드는 것입니다. 그들 중 하나는 x 축에서 직선으로 이동하고 다른 하나는 x 축 (y 축에서 예 : p (0 : -10))에서 아래로 시작하며 추적 원리에 따라 두 번째는 시도합니다. 계속 마주 보면서 첫 번째 것을 잡으려고합니다. 실제 답을 얻는 데 도움이되는 코드를 작성했지만 매우 귀중한 방식으로 시각화 할 수 없습니다. 파이썬을 주요 코딩 언어로 사용하고 있습니다.

Luka K에 미리 감사드립니다.

쉬운

그것은처럼 보인다 enemy following player되는 지난 주에 요청했다 tkinterpygame

여기에 이미지 설명 입력

객체 간의 벡터를 계산합니다.

diff_x = player_x - enemy_x
diff_y = player_y - enemy_y

그리고 거리

distance = (diff_x**2 + diff_y**2)**0.5  # Pythagoras: a**2 + b**2 = c**2

(길이를 갖는 벡터를 정규화 벡터를 계산 1)

normal_x = diff_x/distance
normal_y = diff_y/distance

곱에 의해 어떤 당신이 할 수있는 speed계산을 move_x하고 move_y대한enemy

enemy_move_x = enemy_speed * normal_x
enemy_move_y = enemy_speed * normal_y

이동 enemy하고 선을 그리는 데 사용할 수 있습니다 .


를 그리려면 당신은 다른 모듈을 사용할 수 있습니다 - 어떤 GUI 프레임 워크와 같은 tkinter, PyQt, wxPython또는 게임 / 미디어 등의 라이브러리 pygamepyglet. 결국 애니메이션 GIF를 만드는 데 사용할 수있는 이미지를 생성 할 수 있습니다.


import tkinter as tk

def follow(player_x, player_y, enemy_x, enemy_y, enemy_speed=5):
    diff_x = player_x - enemy_x
    diff_y = player_y - enemy_y

    distance = (diff_x**2 + diff_y**2)**0.5  # Pythagoras: a**2 + b**2 = c**2

    if distance <= enemy_speed:
        return diff_x, diff_y

    normal_x = diff_x/distance
    normal_y = diff_y/distance

    enemy_move_x = enemy_speed * normal_x
    enemy_move_y = enemy_speed * normal_y

    return enemy_move_x, enemy_move_y

def update_game():
    global player_x
    global player_y
    global enemy_x
    global enemy_y

    # draw line for player
    canvas.create_line(player_x, player_y, player_x+player_move_x, player_y+player_move_y, fill='green')

    # move player
    player_x += player_move_x
    player_y += player_move_y
    canvas.move(player_id, player_move_x, player_move_y)

    # calculate move for enemy
    enemy_move_x, enemy_move_y = follow(player_x, player_y, enemy_x, enemy_y, enemy_speed)

    # draw line for enemy
    canvas.create_line(enemy_x, enemy_y, enemy_x+enemy_move_x, enemy_y+enemy_move_y, fill='red')

    # move enemy
    enemy_x += enemy_move_x
    enemy_y += enemy_move_y
    canvas.move(enemy_id, enemy_move_x, enemy_move_y)

    root.after(100, update_game) # repeate after 100ms (0.1s)

# --- main ---

# player start position and move ("speed")
player_x = 5
player_y = 50
player_move_x = 4
player_move_y = 0 # try for `1`

# enemy start position and speed
enemy_x = 5
enemy_y = 500
enemy_speed = 5

root = tk.Tk()

canvas = tk.Canvas(root, width=750, height=500)#, bg='gray')
canvas.pack()

player_id = canvas.create_oval(player_x-5, player_y-5, player_x+5, player_y+5, fill='green')
enemy_id = canvas.create_oval(enemy_x-5, enemy_y-5, enemy_x+5, enemy_y+5, fill='red')

update_game()

root.mainloop()

BTW : 적군이 플레이어따라 가도록하는 방법 에 대한 답변 에서 동일한 코드를 가지고 있지만 키를 사용하여 플레이어를 이동해야 WASD하며 선을 그리지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

기본 애니메이션 만들기

분류에서Dev

푸시 애니메이션 만들기

분류에서Dev

D3에서 곡선 그리기 애니메이션

분류에서Dev

PNG 파일에서 GIF 애니메이션 만들기

분류에서Dev

CSS3를 사용하여 Ant Design과 같은 애니메이션 진행률 표시 줄 만들기

분류에서Dev

버튼 클릭시 CSS 애니메이션으로 방사형 진행률 표시 줄 만들기

분류에서Dev

기존 애니메이션에 곡선 적용

분류에서Dev

캔버스에 애니메이션 곡선 그리기

분류에서Dev

애니메이션이있는 PowerPoint에서 PDF 만들기

분류에서Dev

애니메이션이있는 PowerPoint에서 PDF 만들기

분류에서Dev

대기열에서 jQuery 애니메이션 만들기

분류에서Dev

D3.js 애니메이션에서 애니메이션 GIF 파일 만들기

분류에서Dev

React Native에서 애니메이션 연속 만들기

분류에서Dev

QML에서 불투명도 애니메이션 만들기

분류에서Dev

애니메이션 진행률 가져 오기-SpriteKit SKAction

분류에서Dev

jQuery로 부트 스트랩 애니메이션 진행률 표시 줄 애니메이션 기간 변경

분류에서Dev

파이썬에서 nurbs / geomdl을 사용하여 3D B- 스플라인에서 점의 곡률 중심 찾기

분류에서Dev

양면 전파 애니메이션 만들기

분류에서Dev

D3 및 SVG 요소에 애니메이션 만들기

분류에서Dev

JavaScript에서 투명 이미지에 채우기 애니메이션 만들기

분류에서Dev

JavaScript에서 투명 이미지에 채우기 애니메이션 만들기

분류에서Dev

Glorious JavaScript 라이브러리로 애니메이션 만들기

분류에서Dev

애니메이션 스프라이트 만들기

분류에서Dev

Flutter : AnimatedList 애니메이션 곡선

분류에서Dev

애니메이션 루프를 앞뒤로 만들기

분류에서Dev

더 부드러운 점프 애니메이션 만들기

분류에서Dev

Facebook Android와 같은 로그인 애니메이션 만들기

분류에서Dev

jQuery 애니메이션 루프 만들기

분류에서Dev

LibGDX-무한 반복 애니메이션 만들기

Related 관련 기사

  1. 1

    기본 애니메이션 만들기

  2. 2

    푸시 애니메이션 만들기

  3. 3

    D3에서 곡선 그리기 애니메이션

  4. 4

    PNG 파일에서 GIF 애니메이션 만들기

  5. 5

    CSS3를 사용하여 Ant Design과 같은 애니메이션 진행률 표시 줄 만들기

  6. 6

    버튼 클릭시 CSS 애니메이션으로 방사형 진행률 표시 줄 만들기

  7. 7

    기존 애니메이션에 곡선 적용

  8. 8

    캔버스에 애니메이션 곡선 그리기

  9. 9

    애니메이션이있는 PowerPoint에서 PDF 만들기

  10. 10

    애니메이션이있는 PowerPoint에서 PDF 만들기

  11. 11

    대기열에서 jQuery 애니메이션 만들기

  12. 12

    D3.js 애니메이션에서 애니메이션 GIF 파일 만들기

  13. 13

    React Native에서 애니메이션 연속 만들기

  14. 14

    QML에서 불투명도 애니메이션 만들기

  15. 15

    애니메이션 진행률 가져 오기-SpriteKit SKAction

  16. 16

    jQuery로 부트 스트랩 애니메이션 진행률 표시 줄 애니메이션 기간 변경

  17. 17

    파이썬에서 nurbs / geomdl을 사용하여 3D B- 스플라인에서 점의 곡률 중심 찾기

  18. 18

    양면 전파 애니메이션 만들기

  19. 19

    D3 및 SVG 요소에 애니메이션 만들기

  20. 20

    JavaScript에서 투명 이미지에 채우기 애니메이션 만들기

  21. 21

    JavaScript에서 투명 이미지에 채우기 애니메이션 만들기

  22. 22

    Glorious JavaScript 라이브러리로 애니메이션 만들기

  23. 23

    애니메이션 스프라이트 만들기

  24. 24

    Flutter : AnimatedList 애니메이션 곡선

  25. 25

    애니메이션 루프를 앞뒤로 만들기

  26. 26

    더 부드러운 점프 애니메이션 만들기

  27. 27

    Facebook Android와 같은 로그인 애니메이션 만들기

  28. 28

    jQuery 애니메이션 루프 만들기

  29. 29

    LibGDX-무한 반복 애니메이션 만들기

뜨겁다태그

보관