主頁 > 移動端開發 > 自上而下的射擊影片Unity,如何在移動時播放正確的定向影片?

自上而下的射擊影片Unity,如何在移動時播放正確的定向影片?

2022-04-20 23:50:08 移動端開發

我不太確定如何表達這個問題,對此感到抱歉。我在為角色設定影片以學習自上而下的角色控制器(無剛體)時遇到了這個障礙我在十年前的 Reddit 和統一論壇上看到過這個問題,但我不太明白他們的答案.

我現在的問題是我無法找到一種方法來告訴 mecanim 玩家是否正朝著他們所面對的方向移動。例如,如果玩家向左移動并瞄準左側,則應該播放 moveForward 影片。如果玩家向左移動但瞄準向右,則應該播放 moveBackwards 影片。

這是我第一次發布問題。如果我的格式錯誤,我很抱歉。這是我的代碼,我將不勝感激。

public class CharacterMovement : MonoBehaviour
{

    private Vector3 velocity;

    private Vector3 PlayerMoveInput;

    Animator animationS;
    [SerializeField] CharacterController characterrController;
    [SerializeField] private float MoveSpeed;
    [SerializeField] private float JumpHeight;
    [SerializeField] private float Gravity = -9.81f;
    

    // Start is called before the first frame update
    void Start()
    {
        animationS = GetComponent<Animator>();

    }

    // Update is called once per frame
    void Update()
    {
        PlayerMoveInput = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical")); //collects the input for the player

        MovePlayer();
        PlayerRotation();

    }

    private void MovePlayer() 
    {
      

        if (characterrController.isGrounded)
        {

            velocity.y = -1f;
        }
        
        if (Input.GetKeyDown(KeyCode.Space) && characterrController.isGrounded) 
        {

            velocity.y = JumpHeight;

        }
        ///
        else
        {
            velocity.y -= Gravity * -2f * Time.deltaTime; 
        }

       
        Vector3 MoveVector = transform.TransformDirection(PlayerMoveInput);

        characterrController.Move(MoveSpeed * Time.deltaTime * MoveVector);

        characterrController.Move(velocity * Time.deltaTime);

        
        float velocityX = Vector3.Dot(PlayerMoveInput, transform.forward);
        float velocityZ = Vector3.Dot(PlayerMoveInput, transform.right);
       

        animationS.SetFloat("velocityX", velocityZ, 0.1f, Time.deltaTime);
        animationS.SetFloat("velocityZ", velocityX, 0.1f, Time.deltaTime);

    }

    void PlayerRotation()
    {

        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        Debug.DrawRay(ray.origin, ray.direction, Color.yellow);

        

        if (Physics.Raycast(ray, out hit))
        {
            Vector3 targetPosition = new Vector3(hit.point.x, transform.position.y, hit.point.z);

            Quaternion rotation = Quaternion.LookRotation(targetPosition - transform.position);

            transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * 10.0f); 

            

        }
        
    }
}

uj5u.com熱心網友回復:

這不是將與您的代碼一起使用的確切實作,但應該給您一個良好的開端。

// get the angle between where the player is pointing, and where he is moving
float angle = Vector3.Angle(MoveVector, targetPosition - transform.position);

if (angle < 90f){
    //move forward animation
} else {
    //move back animation
}

我沒有測驗過這段代碼,但想法是如果玩家面對的方向和玩家移動的方向之間的角度小于 90 度,那么他正在向前移動。此外,此處使用的變數:MoveVector 和 targetPosition 是私有的,因此您需要先解決該問題,然后才能實作此方法。

uj5u.com熱心網友回復:

使用 mechanim,在您的影片師中擁有 4 個單獨的浮點值引數是很常見的。兩個用于移動資訊,兩個用于查看方向資訊。這使您可以使用基于那些處理很多痛苦的函式的混合樹,您需要做的就是根據您在做什么,在每次更新/后期更新時使用正確的值更新影片器中的值。

這就是我的影片師引數以及運動混合樹的布局方式,我在單獨的圖層上有另一個,僅用于使用 Head left right 的頭部,并且 head updown 引數用于控制頭部。 自上而下的射擊影片 Unity,如何在移動時播放正確的定向影片? 這是設定影片組件值的代碼(或至少其中一些) 自上而下的射擊影片 Unity,如何在移動時播放正確的定向影片?

編輯:

抱歉,忘了提到我在 anim 變數上呼叫“LerpFloat”的函式是我自己為 animator 組件定義的擴展方法,它所做的只是獲取浮點值,對其進行處理,然后將浮點值設定回來。它只使用 Mathf.Lerp。

uj5u.com熱心網友回復:

謝謝兩位的回答,問題是影片剪輯的設定......

你在哪里打勾

根變換 旋轉

根變換位置 (Y)

根變換位置 (XZ)

我已經勾選了所有這些,只需要根變換旋轉。將來我需要對影片師和影片剪輯更加小心,以免頭疼。

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/459078.html

標籤:unity3d 动画片

上一篇:有什么辦法可以在顫動中將彈出框圈出全屏

下一篇:返回列表

標籤雲
其他(139343) Python(30069) JavaScript(18494) Java(15386) C(12876) 區塊鏈(8221) AI(7469) 基礎類(6313) MySQL(5821) C#(5516) 腳本語言(PerlPython)(5129) 爪哇(5123) 非技術區(4971) html(4740) PHP(4619) Linux(4564) sql(4454) 熊猫(4432) Android(4303) 数组(3925) R(3884) 反应(3500) C語言(3288) C++語言(3117) 数据框(3093) css(3027) 节点.js(2811) Java相關(2746) 疑難問題(2699) 單片機工控(2479) json(2360) VBA(2306) 列表(2289) 扑(2215) 安卓(2193) 打字稿(2022) Web開發(1951) ASP.NET(1946) iOS(1878) 细绳(1820) 網絡通信(1793) 蟒蛇-3.x(1774) 數據庫相關(1767) VB基礎類(1755) .NETCore(1712) MongoDB(1668) 開發(1646) C++(1621) 系統維護與使用區(1617) 循环(1597) 麻木的(1586) 正则表达式(1585) 字典(1580) 基礎和管理(1579) HtmlCss(1567) 擅长(1566) JavaEE(1566) Unity3D(1547) .NET技术(1543) 镖(1531)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 自上而下的射擊影片Unity,如何在移動時播放正確的定向影片?

    我不太確定如何表達這個問題,對此感到抱歉。我在為角色設定影片以學習自上而下的角色控制器(無剛體)時遇到了這個障礙我在十年前的 Reddit 和統一論壇上看到過...

    uj5u.com 2022-04-20 23:50:08 more
  • 有什么辦法可以在顫動中將彈出框圈出全屏

    我也嘗試使用高度作為半徑進行影片處理,但這在螢屏外不起作用,這似乎是不可能的。我想讓這個圓形頭像覆寫所有螢屏,但只要半徑最大到設備寬度/2 或高度/2,它就...

    uj5u.com 2022-04-20 23:47:41 more
  • 如何為類使用懸停標簽?

    我正在使用 bootstrap 和 animate.css 構建網站我想在用戶將滑鼠懸停在鏈接上時添加影片鏈接應該擺動為此,我使用了 animate.css 類但現在我不知道在其中懸...

    uj5u.com 2022-04-20 23:47:04 more
  • 如何根據狀態變化在兩個自定義視圖之間進行轉換?

    我在 ObservedObject 中有一個狀態變數,它決定了我在 SwiftUI 中顯示的兩個自定義視圖中的哪一個。我在不同的地方弄亂了 .animation(.easeIn) 并嘗試了 .wi...

    uj5u.com 2022-04-20 23:46:08 more
  • 如何影片切換到html中的不同部分?

    我最近開始為我的網站使用部分,但我討厭它只是立即將您帶到您設定的部分。我在一些網站上看到,當您按下按鈕將您帶到另一個部分時,它會向下滑動非常順暢。我一...

    uj5u.com 2022-04-20 23:45:08 more
  • UICollectionView中,折疊影片不完善,隱藏項沒有高度收縮影片

    基于中描述的問題如你看到的,展開影片效果很好!對于折疊影片,內部UIView會立即消失,沒有任何影片。你有什么想法,為什么崩潰時沒有隱藏影片?這是執行折疊/展開的...

    uj5u.com 2022-04-20 23:43:40 more
  • 在顫動中點擊影片時如何切換影片

    我是riveand的初學者flutter。我正在構建一個最喜歡的專案頁面flutter。如果收藏夾中沒有任何內容,我需要riveAnimation在螢屏上顯示。我已經實作了幾乎所有...

    uj5u.com 2022-04-20 23:37:20 more
  • 出現時禁用SwiftUI幀影片

    目標假設我有 aList或 a LazyVGrid,它顯示嵌套在 a 中的多個專案ScrollView。我使用ForEach視圖來生成單個專案視圖:ForEach(items) { item in ItemView(i...

    uj5u.com 2022-04-20 23:33:46 more
  • 如何使用matplotlib繪制3D資料流

    程式描述:我有一部手機每 2 秒向服務器發送一次陀螺儀資料。我每秒都從服務器檢索資料。我的程式的目的是讀取這個資料流并使用可以自動更新的 matplotlib...

    uj5u.com 2022-04-20 23:32:24 more
  • 如何按ID從JSON物件陣列中洗掉陣列元素

    這可能很容易,但給我帶來了麻煩。鑒于此 JSON 結構: "playlists" : [ { "id" : "1", "owner_id" : "2", "song_ids" : [...

    uj5u.com 2022-04-20 22:30:53 more