1)如何計算弧線彈道的落地位置
2)Unity 2021 IL2CPP下使用Protobuf-net序列化報異常
3)編譯問題,用Mono可以,但用IL2CPP就報錯
4)Wwise的Bank在安卓上LoadBank之后,播放沒有聲音
這是第393篇UWA技術知識分享的推送,精選了UWA社區的熱門話題,涵蓋了UWA問答、社區帖子等技術知識點,助力大家更全面地掌握和學習。
Physics
Q:請教一個問題,現在我有一個可以打出弧線彈道的迫擊炮,可以放到場景里任何位置,怎么能算出可以打到的區域和打不到的區域?要考慮場景內建筑物的遮擋問題。
然后,旋轉一周的話以多少角度來計算呢?
A1:碰撞不只有地面的碰撞,所以高度圖也不能解決。自己模擬彈道軌跡計算,然后進行分段逐個探測就好。要真說GPU來解決,可能更多是基于視覺表現上的,而且會把問題變得更加復雜,只是提升下數量非常多的時候的性能。
可以參考Niagara,使用深度圖、SDF、或者新一代GPU的物理探測方案來做支持。
感謝聽風辨雨@UWA問答社區提供了回答
A2:笨方法就是先旋轉一周一層循環,再從0到90度仰角再一層循環,每個發射角用拋物線公式計算虛擬炮彈的運動軌跡,軌跡連線,中間有物理的射線檢測判斷有沒有障礙,最后生成大量的拋物線的落點畫出來。
感覺上SphereCast比射線檢測更好,這個用Compute Shader算應該很合適。但是建筑物碰撞部分怎么在CS里面處理?是不是把建筑物的碰撞先預處理成體素還不確定。
感謝jump晃悠@UWA問答社區提供了回答
A3:微積分基礎思想就能解決,小范圍內以直代曲,也就是分段SphereCast即可。如果要更精確,就不要用均勻分段,而是根據曲率不同分段長度不同,曲率就是拋物線函數的二次導數。
另外,每個角度算一個曲線就好,一般不需要提前把所有可能都算出來。
感謝偶爾不帥@UWA問答社區提供了回答
Script
Q:請問有遇到這個問題的嘛,在安卓上序列化報以下異常:
NotSupportedException: D:/Unity2021/Unity 2021.3.4f1/Editor/Data/il2cpp/libil2cpp/icalls/mscorlib/System.Reflection/RuntimeParameterInfo.cpp(23) : Unsupported internal call for IL2CPP:RuntimeParameterInfo::GetTypeModifiers - "This icall is not supported by il2cpp."
A:.NET功能可能不受IL2CPP支持,試著升級一下Unity或者繞過你要實現的功能。
感謝蕭小俊@UWA問答社區提供了回答
Script
Q:請教個問題,使用IL2Cpp就報錯,用Mono編譯就可以過。
A:IL2CPP里代碼太多也會這樣,如果開了Script Debugging關掉試試。若還沒解決,那把這里調高看看(如下圖),讓代碼少一點。
不過調高了有可能有別的報錯,如果Strip了需要用到的東西,還得自己加到link.xml里。
感謝deviljz@UWA問答社區提供了回答
Audio
Q:請教個問題,Wwise的Bank在安卓上LoadBank之后,播放沒有聲音,請問有人遇到過嗎?
A:連Wwise的Profiler,看下是Bank加載失敗了,還是播放失敗了,或者根本就沒有Listener,都有可能的,Profiler都會告訴你。
感謝斷弦的旋律@UWA問答社區提供了回答
封面圖來源于網絡
今天的分享就到這里。生有涯而知無涯,在漫漫的開發周期中,我們遇到的問題只是冰山一角,UWA社區愿伴你同行,一起探索分享。歡迎更多的開發者加入UWA社區。
UWA官網:www.uwa4d.com
UWA社區:community.uwa4d.com
?