无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

三維斜拋運(yùn)動(dòng)定點(diǎn)打擊解算和unity實(shí)現(xiàn)

2023-05-18 20:43 作者:DeadCyber  | 我要投稿

思路概述

? ? 假設(shè)起點(diǎn)為source,目標(biāo)點(diǎn)為target,source以theta角度朝上拋出,求初速度M使得能夠正好落在target。

? ? 可以將問題分為2個(gè)部分。

????第1部分,求得“仰角”為theta的拋出方向ThrowDir。

????第2部分,解算求得初速度M。

????可以將運(yùn)動(dòng)劃分為2個(gè)部分。

????第1部分,從出發(fā)點(diǎn)開始到最高點(diǎn)結(jié)束。

????第2部分,從最高點(diǎn)開始到target結(jié)束。

拋射方向

我用chatGPT問的,然后改了一下bug。dir為target-source方向,angle為“仰角”


列關(guān)系式

設(shè)throwDir的xz平面分量大小為k1,垂直大小為k2。

設(shè)source和target的水平距離d1,垂直距離d2。

設(shè)h為第一階段垂直距離。

設(shè)第1階段用時(shí)t1,第2階段用時(shí)t2。

????關(guān)系1:t1*g=M*k2。因?yàn)橹皇苤亓?,垂直速度均勻降?

????關(guān)系2:h=M*k2*t-1/2*g*t^2。初中“公式”,其實(shí)是速度Mk2-gt積分來的。

????關(guān)系3:d2+h=1/2*g*t^2。同理初中“公式”,因?yàn)榈诙A段是從最高點(diǎn)0速度開始的。

????關(guān)系4:M*k1*(t1+t2) = d1。 水平方向是勻速運(yùn)動(dòng)。

公式見下圖,

由于貌似不能化簡(jiǎn)出簡(jiǎn)單方程,所以用二分法(我圖省事)解算方程。

以上圖波浪線的關(guān)系,也就是水平位移關(guān)系式做解方程f(x)=0。

即為f(M) = M*k1*(t1+t2) - d1 = 0,求零點(diǎn)。

f比較復(fù)雜:

整個(gè)變量初始化和解算:

二分法解方程代碼(設(shè)定了最多100000步,其實(shí)10來步error就<0.0001了):

迭代和終點(diǎn)問題

1.必須使用FixedUpdate

2.必須先speed+=a*dt,其次pos+=speed*dt

3.由于到終點(diǎn)速度過快,無法完全對(duì)準(zhǔn):


由于我的需求是完全對(duì)準(zhǔn),所以就硬set過去了,這點(diǎn)誤差對(duì)我的項(xiàng)目來說可以接受:

結(jié)束。

三維斜拋運(yùn)動(dòng)定點(diǎn)打擊解算和unity實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
湟中县| 嘉荫县| 本溪市| 柯坪县| 宁化县| 沧州市| 丰都县| 广西| 山丹县| 綦江县| 红桥区| 正定县| 马尔康县| 中阳县| 伊春市| 江都市| 南澳县| 罗田县| 宁晋县| 宁都县| 仙桃市| 曲水县| 威宁| 新疆| 茌平县| 赤壁市| 仙游县| 南岸区| 丰台区| 晋江市| 汝州市| 胶南市| 偃师市| 醴陵市| 通化市| 和林格尔县| 堆龙德庆县| 桦甸市| 阿巴嘎旗| 锡林浩特市| 汤原县|