最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

【MCBE/命令教程】1Tick獲取所有實體坐標(biāo)(1鏈?zhǔn)桨姹?適用于網(wǎng)易BE租賃服)

2021-07-15 12:44 作者:Happy2018new  | 我要投稿

【前言/專欄閱讀須知】

1.?本專欄取材于 入戲DL

2. 具體效果可見站內(nèi)視頻?[mcbe]純命令1gt獲取多實體坐標(biāo) - 入戲DL

3. 專欄編寫不易,請讀者根據(jù)實際情況點贊、收藏、投幣和關(guān)注

4. 若需要轉(zhuǎn)載本專欄則需要注明來源

5. 本專欄不會涉及太多的命令(命令一般以范例的形式出現(xiàn)),因此若需要直接取得命令函數(shù),請前往本專欄文尾獲取

6. 本專欄所講述的方法相比初始方法的“execute @e ~ ~ ~ function”更加耗費設(shè)備性能。函數(shù)玩家應(yīng)當(dāng)酌情選擇本方法

【教程】

部分用語規(guī)定:

每個需要取得坐標(biāo)的實體都被稱為實體A

準(zhǔn)備過程:

1. 確定所有實體A所在的維度(對于租賃服可使用rm法快捷確定)

2. 在相應(yīng)維度的原點處[坐標(biāo)(0.0,0.0,0.0)]處生成1實體(下稱實體Target;可以選擇先在加載區(qū)域生成完成后再傳送到該位置)

3. 在每個需要取得實體的位置處生成1實體

*說明:單個Tick內(nèi)生物可能仍會有所移動。如果需要減少誤差,建議在每個實體A處生成1實體B用于代替每個實體A。

正式過程:

X軸

1. 以所有Teleport實體的(~,0.0,0.0)位置作為執(zhí)行點并將其傳送傳送到執(zhí)行點位置(命令范例:execute @e[tag=Teleport] ~ 0.0 0.0 tp ~ ~ ~)

2. 若有Teleport實體在X軸的負半軸,則將其轉(zhuǎn)入到正半軸區(qū)間內(nèi)并對其進行標(biāo)記(若求取X軸坐標(biāo)的范圍為-1024~1024,則將該實體的X軸坐標(biāo)向X軸正方向偏移1024格方塊;標(biāo)記可用標(biāo)簽<tag>來完成)

3. 讓所有Teleport實體朝向當(dāng)個維度內(nèi)的Target實體

*說明:此時每個實體A對應(yīng)的實體Teleport都朝向了當(dāng)個維度內(nèi)的Target實體,情況大致如圖例1所示:

圖例1

4. 讓所有Teleport實體朝著Target實體二分,直到到達Target實體的位置。二分結(jié)束后,Teleport實體會有其X軸坐標(biāo)的分數(shù)(若不會二分,請見下文的“二分/讀取坐標(biāo)(基礎(chǔ)) 詳細教程】”)

*說明:二分結(jié)束后,所有的Teleport實體應(yīng)當(dāng)都在實體Target的1格內(nèi),情況大致如圖例2所示:

圖例2

5. 讓所有Teleport備份其剛剛得到的X軸坐標(biāo)的分數(shù)并通過還原該分數(shù)以回到原位置(即完成步驟2時的情況,示例圖可見圖例1;若不會還原坐標(biāo),請見下文的“分數(shù)轉(zhuǎn)坐標(biāo)詳細教程】”)

6. 如果在二分前有實體Teleport由X軸的負半軸轉(zhuǎn)入了正半軸,則現(xiàn)在需要轉(zhuǎn)回負半軸

7. 以每個實體A的(~,0.0,0.0)位置作為執(zhí)行點,將該位置最近的Teleport實體得到的X軸坐標(biāo)分數(shù)同步給實體A(命令范例:execute @e[tag=a] ~ 0.0 0.0 scoreboard players operation @s posx = @e[c=1,tag=Teleport] posx_save)

*說明:因為步驟5~6已經(jīng)讓所有Teleport實體回到了完成步驟1時的情況,即每個Teleport實體的坐標(biāo)可以用每個實體A坐標(biāo)(~,0.0,0.0)來表示。通過c=1這一參數(shù)即可限定分數(shù)同步條件,確定實體A最終得到的分數(shù)是來源于正確的Teleport實體

8. 清理實體Teleport、實體Target、整個X軸坐標(biāo)的求取宣告結(jié)束

【同理可得Y軸、Z軸坐標(biāo),本專欄將不再贅述方法】

【二分/讀取坐標(biāo)(基礎(chǔ))?詳細教程】

準(zhǔn)備過程:

已知任意一個正整數(shù)可以被拆分為多個2^n之和的形式,同時每個已經(jīng)使用過的2^n不會被再次使用。以下是2^n的一部分例子(下稱為2^n集合表):

2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 2^8 ... 對應(yīng) 0 2?4 8 16 32 64 128 256 ...

拆分范例:

Ⅰ. 127 = 64 + 32 + 16 + 8 + 4 + 2 + 1

Ⅱ. 233 = 128 + 64 + 32 + 8 + 1

Ⅲ. 337 = 256 + 64 + 16 + 1

用語規(guī)定:此處稱 127 , 233 , 337 為目標(biāo)數(shù)

解析:通過 拆分范例 可知,我們從給出的2^n集合表的最大數(shù)字開始向較小的數(shù)字依次選擇,直到選擇到的數(shù)≦目標(biāo)數(shù)。當(dāng)滿足“選擇到的數(shù)≦目標(biāo)數(shù)”時,將目標(biāo)數(shù)減去選擇到的數(shù),完成首次拆分并繼續(xù)向較小數(shù)選擇,直到目標(biāo)數(shù)被減為0

拆分過程范例:

以目標(biāo)數(shù)為127為例,2^n集合表保持不變:256≧127,不滿足,向較小數(shù) 128 選擇。128≧127,不滿足,向較小數(shù) 64 選擇。64≦127,滿足,作差,得目標(biāo)數(shù)為 127-64=63 ,63≠0,需要繼續(xù)選擇較小數(shù) 32 。32≦63 ,滿足,作差,得目標(biāo)數(shù)為 63-32=31 ,31≠0 ,需要繼續(xù)選擇較小數(shù) 16 。16≦31,滿足,作差,得目標(biāo)數(shù)為 31-16=15 ,15≠0 ,需要繼續(xù)選擇較小數(shù)?8?。8≦15,滿足,作差,得目標(biāo)數(shù)為 15-8=7?,7≠0?,需要繼續(xù)選擇較小數(shù) 4?。4≦7,滿足,作差,得目標(biāo)數(shù)為 7-4=3?,3≠0?,需要繼續(xù)選擇較小數(shù) 2?。2≦3,滿足,作差,得目標(biāo)數(shù)為?3-2=1?,1≠0?,需要繼續(xù)選擇較小數(shù) 1?。1≦1,滿足,作差,得目標(biāo)數(shù)為 1-1=0?,0=0?,拆分結(jié)束。其中滿足條件是2^n數(shù)分別有:63,32,16,8,4,2,1,固127可被拆分為63+32+16+8+4+2+1.

正式過程:

語言說明:

1. 讓實體Target選中距離大于2^n(此處的n根據(jù)坐標(biāo)求取范圍而定)的Teleport實體

2. 將選到的這些實體在計分板上變動分數(shù)

3. 將選到的這些實體向Target實體的方向傳送2^n格

4. 讓實體Target選中距離大于2^(n-1)的Teleport實體

5.?將選到的這些實體在計分板上變動分數(shù)

6.?將選到的這些實體向Target實體的方向傳送2^(n-1)格

7.?讓實體Target選中距離大于2^(n-2)的Teleport實體

8.?將選到的這些實體在計分板上變動分數(shù)

9.?將選到的這些實體向Target實體的方向傳送2^(n-2)格

...

n. 讓實體Target選中距離大于2^0的Teleport實體

n+1.?將選到的這些實體在計分板上變動分數(shù)

n+2.?將選到的這些實體向Target實體的方向傳送2^0格

命令范例(“#”表示注釋,不屬于指令;distance表示儲存坐標(biāo)的計分板):

execute @e[tag=Target] ~ ~ ~ scoreboard players add @e[rm=2^n,tag=Teleport] distance 2^n

execute @e[tag=Target] ~ ~ ~ execute @e[rm=2^n,tag=Teleport] ~ ~ ~ tp ^ ^ ^2^n

#1

execute @e[tag=Target] ~ ~ ~?scoreboard players add?@e[rm=2^(n-1),tag=Teleport]?distance 2^(n-1)

execute?@e[tag=Target] ~ ~ ~ execute?@e[rm=2^n,tag=Teleport] ~ ~ ~ tp ^ ^ ^2^(n-1)

#2

execute @e[tag=Target] ~ ~ ~?scoreboard players add?@e[rm=2^(n-2),tag=Teleport]?distance 2^(n-2)

execute?@e[tag=Target] ~ ~ ~ execute?@e[rm=2^n,tag=Teleport] ~ ~ ~ tp ^ ^ ^2^(n-2)

#3

...

execute @e[tag=Target] ~ ~ ~?scoreboard players add?@e[rm=2^0,tag=Teleport]?distance 2^0

execute?@e[tag=Target] ~ ~ ~ execute?@e[rm=2^n,tag=Teleport] ~ ~ ~ tp ^ ^ ^2^0

#n

【分數(shù)轉(zhuǎn)坐標(biāo)詳細教程】

準(zhǔn)備過程:

見本專欄“二分/讀取坐標(biāo)(基礎(chǔ))?詳細教程”的“準(zhǔn)備過程”部分

正式過程:

語言說明:

1. 選擇分數(shù)≧2^n的需要還原坐標(biāo)的實體

2. 將這些實體向指定方向傳送2^n格

3. 扣除這些實體在指定計分板中的分數(shù),只扣除2^n

4.?選擇分數(shù)≧2^(n-1)的需要還原坐標(biāo)的實體

4. 將這些實體向指定方向傳送2^(n-1)格

5. 扣除這些實體在指定計分板中的分數(shù),只扣除2^(n-1)

6.?選擇分數(shù)≧2^(n-2)的需要還原坐標(biāo)的實體

7.?將這些實體向指定方向傳送2^(n-2)格

8. 扣除這些實體在指定計分板中的分數(shù),只扣除2^(n-2)

...

n.?選擇分數(shù)≧2^0的需要還原坐標(biāo)的實體

n+1.?將這些實體向指定方向傳送2^0格

n+2. 扣除這些實體在指定計分板中的分數(shù),只扣除2^0

命令范例(“#”表示注釋,不屬于指令;distance表示儲存坐標(biāo)的計分板):

execute @e[scores={distance=2^n..},tag=需要還原坐標(biāo)] ~ ~ ~ tp ^ ^ ^-2^n

execute @e[scores={distance=2^n..},tag=需要還原坐標(biāo)] ~ ~ ~ scoreboard players remove @s distance 2^n

#1

execute @e[scores={distance=2^(n-1)..},tag=需要還原坐標(biāo)] ~ ~ ~?tp ^ ^ ^-2^(n-1)

execute @e[scores={distance=2^(n-1)..},tag=需要還原坐標(biāo)] ~ ~ ~ scoreboard players remove @s distance 2^(n-1)

#2

execute @e[scores={distance=2^(n-2)..},tag=需要還原坐標(biāo)] ~ ~ ~?tp ^ ^ ^-2^(n-2)

execute @e[scores={distance=2^(n-2)..},tag=需要還原坐標(biāo)] ~ ~ ~ scoreboard players remove @s distance 2^(n-2)

#3

...

execute @e[scores={distance=2^0..},tag=需要還原坐標(biāo)] ~ ~ ~?tp ^ ^ ^-2^0

execute @e[scores={distance=2^0..},tag=需要還原坐標(biāo)] ~ ~ ~ scoreboard players remove @s distance 2^0

#n

【結(jié)束】

1. 感謝各位閱讀花費寶貴的時間閱讀本專欄,希望對各位有所幫助!

2. 值得一提的是,該方法除了原本的獲取坐標(biāo)外,還需要再還原坐標(biāo)。這就間接的導(dǎo)致了命令量的上升,二分次數(shù)從原本的3次變?yōu)榱?次

3. 讀者我是白嫖黨/讀者我不想看專欄/讀者我想要直接得到指令:請入QQ群?902923525?自?。ㄎ募挥谌何募A“指令包”中,文件名為pos.mcfunction,沒有打包為行為包。帶有標(biāo)簽getpos的實體會被視為需要取得坐標(biāo)的對象,標(biāo)簽添加完成后執(zhí)行命令function pos即可。該函數(shù)沒有考慮多個實體A存在于多個維度的情況)


【MCBE/命令教程】1Tick獲取所有實體坐標(biāo)(1鏈?zhǔn)桨姹?適用于網(wǎng)易BE租賃服)的評論 (共 條)

分享到微博請遵守國家法律
类乌齐县| 隆林| 东乡| 高淳县| 中牟县| 邢台县| 聂荣县| 吴旗县| 靖州| 隆子县| 陇川县| 砚山县| 扎兰屯市| 甘德县| 芮城县| 博湖县| 罗甸县| 湘潭县| 兰溪市| 互助| 县级市| 郯城县| 阿荣旗| 达州市| 新野县| 梁平县| 惠安县| 延吉市| 建宁县| 四会市| 广灵县| 通山县| 恭城| 邮箱| 菏泽市| 枣强县| 龙口市| 河曲县| 图片| 木兰县| 垣曲县|