亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

為什么有時 Vector3.Distance 不準確

為什么有時 Vector3.Distance 不準確

C#
米琪卡哇伊 2021-11-14 16:01:43
所以我有這個代碼: using System.Collections;    using System.Collections.Generic;    using UnityEngine;    public class CreateTrail : MonoBehaviour {        Vector3 lastLocation;        int traveled;        public GameObject obj;        Quaternion lastQuaternion;        bool on;        // Use this for initialization        void Start () {            lastLocation = transform.position;            lastQuaternion = transform.rotation;        }        // Update is called once per frame        void Update () {            if (on)            {                if (Vector3.Distance(lastLocation, transform.position) > .1)                {                    Instantiate(obj, lastLocation, lastQuaternion);                    lastLocation = transform.position;                    lastQuaternion = transform.rotation;                }            }            if (Input.GetKeyDown(KeyCode.Space))            {                if (on)                {                    on = false;                }                else                {                    lastLocation = transform.position;                    lastQuaternion = transform.rotation;                    on = true;                }            }        }    }它在它所連接的對象后面創建一串對象,但通常將帶有腳本的對象和在彼此內部創建的對象一起創建。有沒有辦法在對象不在彼此內部時延遲或排隊對象實例化,而不會中斷腳本的其余部分?謝謝!
查看完整描述

1 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

您可以嘗試Coroutine,InvokeInvokeRepeating創建延遲。(盡量避免使用TimerThread。)

然后添加一個碰撞器作為觸發器作為邊界框,并實現其OnTriggerExitOnTriggerExit2D方法,以便找出另一個碰撞器何時移出邊界框。


但是,可能還有另一個問題:

Vector3.Distance返回 a float,與 a double.1)相比,其中一個應該轉換為另一個的類型。

它將float被隱式轉換為double并將其準確性改變。

您可以通過比較兩個floats來避免這種情況

if (Vector3.Distance(lastLocation, transform.position) > .1f)

您可以在此處找到有關隱式轉換的更多信息


查看完整回答
反對 回復 2021-11-14
  • 1 回答
  • 0 關注
  • 253 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號