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

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

我如何使用rigidbody2d.velocity 在Unity 中跟隨一個對象?

我如何使用rigidbody2d.velocity 在Unity 中跟隨一個對象?

C#
泛舟湖上清波郎朗 2021-12-25 18:22:21
我需要玩家跟隨移動的目標(biāo)并在到達(dá)目標(biāo)時準(zhǔn)確停止。玩家必須在每一幀中幾乎立即到達(dá)目標(biāo),所以我需要一種高速的方式來做到這一點(diǎn)。我無法使用 Transform.translate,因?yàn)槲业挠螒蛑杏泻芏辔锢韺?shí)現(xiàn),而使用 Transform.translate 或 movetowards 會使物理問題變得麻煩。是否有任何基于物理學(xué)的方法來跟蹤目標(biāo)?速度,AddForce,什么?對于 2D 游戲。任何線索將不勝感激!謝謝!
查看完整描述

2 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個贊

如果你有一個Rigidbody2D你想跟隨另一個對象,這Rigidbody2D.MovePosition 是移動它的正確方法。

請執(zhí)行下列操作:

1 .通過將“重力比例”設(shè)置為 0 來禁用重力。

2 .將 BodyType 更改為 Kinematic。

3 .您現(xiàn)在可以Rigidbody使用該Rigidbody2D.MovePosition功能移動對象以跟隨另一個游戲?qū)ο?。請參閱下面的代碼。這應(yīng)該在FixedUpdate函數(shù)中完成,Time.fixedDeltaTime而不是Time.deltatime。

最后,如果您仍然有生澀的運(yùn)動,請將Interpolate選項(xiàng)從None更改為 InterpolateExtrapolate。我還建議減少下面的速度變量。

//Object to follow

public Transform target;

//Rigidbody to move

public Rigidbody2D rb2d;

public float speed = 7.0f;

//Distance to start moving

public float minDistance = 0.09f;


void FixedUpdate()

{

    //Find direction

    Vector3 dir = (target.transform.position - rb2d.transform.position).normalized;

    //Check if we need to follow object then do so 

    if (Vector3.Distance(target.transform.position, rb2d.transform.position) > minDistance)

    {

        rb2d.MovePosition(rb2d.transform.position + dir * speed * Time.fixedDeltaTime);

    }

}


查看完整回答
反對 回復(fù) 2021-12-25
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個贊

直接改變速度總是不好的做法,應(yīng)該避免。而是始終使用 AddForce。我會計(jì)算目標(biāo)和身體之間的距離,并根據(jù)該距離添加一個力。


var dif = target.transform.pos - body.transform.pos;

bodyRigid.AddForce(dif * multiplier * Time.deltatime);

該解決方案帶來的唯一問題可能是,一旦目標(biāo)關(guān)閉,身體就會在目標(biāo)周圍“搖晃”。您可以通過檢查身體是否接近目標(biāo)然后將其凍結(jié)來避免這種情況。


var dif = target.transform.pos - body.transform.pos;

if(dif.magnitude > 1) {

    bodyRigid.AddForce(dif * multiplier * Time.deltatime);

} else {

    bodyRigid.velocity = Vector2.zero;

}

雖然我說直接設(shè)置速度是個壞習(xí)慣,但是用它來凍結(jié)身體應(yīng)該沒問題。我不知道這是否會破壞你在游戲中使用的其他物理,因?yàn)檫@會直接凍結(jié)你的對象。您還可以更改凍結(jié)所需的距離(if 語句中的 1),只需稍微調(diào)整一下并找到適合游戲的值


查看完整回答
反對 回復(fù) 2021-12-25
  • 2 回答
  • 0 關(guān)注
  • 694 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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