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

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

用2點找出向量

用2點找出向量

一只萌萌小番薯 2021-03-29 17:12:18
我正在幫助我的朋友玩pygame,但我們陷入困境所以正在試圖獲得射彈的方向,但我們無法找到如何例如:[1,1]將進入SE[1,-1]將進入NE[-1,-1]將進入NW并且[-1,1]將進入SW我們需要一個方程式,該方程式將需要玩家pos和鼠標(biāo)pos并找出彈丸需要向哪個方向移動這是我們插入向量的地方:def update(self):    self.rect.x += self.vector[0]    self.rect.y += self.vector[1]然后我們在rects坐標(biāo)上彈射彈丸
查看完整描述

1 回答

?
溫溫醬

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

因此,首先要獲得播放器到光標(biāo)的矢量距離。減去兩個點可以得到它們之間的向量:


distance = [mouse.x - player.x, mouse.y - player.y]

現(xiàn)在,您要將其標(biāo)準(zhǔn)化為單位向量。為此,您只需得到范數(shù)(通過畢達哥拉斯定理),然后將矢量除以范數(shù)即可:


norm = math.sqrt(distance[0] ** 2 + distance[1] ** 2)

direction = [distance[0] / norm, distance[1] / norm]

最后,您需要速度向量。您可以通過將方向(單位矢量)乘以速度來獲得。


由于您希望發(fā)射到SE的子彈具有矢量[1, 1],因此(大概)希望所有子彈以該速度矢量的速度移動,即sqrt(2)(再次根據(jù)畢達哥拉斯定理)。所以:


bullet_vector = [direction[0] * math.sqrt(2), direction[1] * math.sqrt(2)]

就是這樣。


在這里,您可以看到此代碼的工作情況。(這是一個交互式可視化工具,因此,如果有任何您不了解的部分,您可以逐步進行操作。)


我在處創(chuàng)建一個播放器[10.0, 25.0],然后將鼠標(biāo)指針從通常(但不完全)向東南的方向上移出[30.0, 70.0],并bullet_vector最終[0.5743665268941905, 1.2923246855119288]指向一個向量,該向量以速度指向相同的向東南的一般方向sqrt(2)。


這表明它可以向東南移動(如果您想完全向東南移動,mouse = Point(30.0, 45.0)則將8號線更改為),它可以沿8個羅盤點以外的方向移動,并且始終以相同的速度行進。


查看完整回答
反對 回復(fù) 2021-04-06
  • 1 回答
  • 0 關(guān)注
  • 339 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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