国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【unity小技巧】實現(xiàn)沒有動畫的FPS武器搖擺和擺動效果

這篇具有很好參考價值的文章主要介紹了【unity小技巧】實現(xiàn)沒有動畫的FPS武器搖擺和擺動效果。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

添加程序搖擺和擺動是為任何FPS游戲添加一些細(xì)節(jié)的非常簡單的方法。但是并不是所以的模型動畫都會配有武器擺動動畫效果,在本文中,將實現(xiàn)如何使用一些簡單的代碼實現(xiàn)武器搖擺和擺動效果,這比設(shè)置動畫來嘗試實現(xiàn)類似效果要容易得多

開始

新增SwayNBobScript代碼

using UnityEngine;

// 武器擺動腳本
public class SwayNBobScript : MonoBehaviour
{
    [Header("Sway")]
    public float step = 0.01f;  // 擺動步長
    public float maxStepDistance = 0.06f;  // 最大步長距離
    Vector3 swayPos;  // 擺動位置

    [Header("Sway Rotation")]
    public float rotationStep = 4f;  // 擺動旋轉(zhuǎn)步長
    public float maxRotationStep = 5f;  // 最大旋轉(zhuǎn)步長
    Vector3 swayEulerRot;  // 擺動旋轉(zhuǎn)角度

    public float smooth = 10f;  // 平滑移動速度
    float smoothRot = 12f;  // 平滑旋轉(zhuǎn)速度

    [Header("Bobbing")]
    public float speedCurve;  // 速度曲線參數(shù)
    float curveSin { get => Mathf.Sin(speedCurve); }  // 曲線正弦值
    float curveCos { get => Mathf.Cos(speedCurve); }  // 曲線余弦值

    public Vector3 travelLimit = Vector3.one * 0.025f;  // 移動限制
    public Vector3 bobLimit = Vector3.one * 0.01f;  // 擺動限制
    Vector3 bobPosition;  // 擺動位置偏移量

    public float bobExaggeration;  // 擺動夸張系數(shù)

    [Header("Bob Rotation")]
    public Vector3 multiplier;  // 擺動旋轉(zhuǎn)系數(shù)
    Vector3 bobEulerRotation;  // 擺動旋轉(zhuǎn)角度

    void Update()
    {
        GetInput();

        Sway();
        SwayRotation();
        BobOffset();
        BobRotation();

        CompositePositionRotation();
    }


    Vector2 walkInput;  // 行走輸入
    Vector2 lookInput;  // 視角輸入

    // 獲取輸入
    void GetInput()
    {
        walkInput.x = Input.GetAxis("Horizontal");
        walkInput.y = Input.GetAxis("Vertical");
        walkInput = walkInput.normalized;

        lookInput.x = Input.GetAxis("Mouse X");
        lookInput.y = Input.GetAxis("Mouse Y");
    }


    // 擺動
    void Sway()
    {
        Vector3 invertLook = lookInput * -step;
        invertLook.x = Mathf.Clamp(invertLook.x, -maxStepDistance, maxStepDistance);
        invertLook.y = Mathf.Clamp(invertLook.y, -maxStepDistance, maxStepDistance);
        swayPos = invertLook;
    }

    // 擺動旋轉(zhuǎn)
    void SwayRotation()
    {
        Vector2 invertLook = lookInput * -rotationStep;
        invertLook.x = Mathf.Clamp(invertLook.x, -maxRotationStep, maxRotationStep);
        invertLook.y = Mathf.Clamp(invertLook.y, -maxRotationStep, maxRotationStep);
        swayEulerRot = new Vector3(invertLook.y, invertLook.x, invertLook.x);
    }

    // 合成位置和旋轉(zhuǎn)部分
    void CompositePositionRotation()
    {
        transform.localPosition = Vector3.Lerp(transform.localPosition, swayPos + bobPosition, Time.deltaTime * smooth);
        transform.localRotation = Quaternion.Slerp(transform.localRotation, Quaternion.Euler(swayEulerRot) * Quaternion.Euler(bobEulerRotation), Time.deltaTime * smoothRot);
    }

    // 擺動偏移
    void BobOffset()
    {
        speedCurve += Time.deltaTime * (MovementScript.Instance.isGround ? (Input.GetAxis("Horizontal") + Input.GetAxis("Vertical")) * bobExaggeration : 1f) + 0.01f;

        bobPosition.x = (curveCos * bobLimit.x * (MovementScript.Instance.isGround ? 1 : 0)) - (walkInput.x * travelLimit.x);
        bobPosition.y = (curveSin * bobLimit.y) - (Input.GetAxis("Vertical") * travelLimit.y);
        bobPosition.z = -(walkInput.y * travelLimit.z);
    }

    // 擺動旋轉(zhuǎn)
    void BobRotation()
    {
        bobEulerRotation.x = (walkInput != Vector2.zero ? multiplier.x * (Mathf.Sin(2 * speedCurve)) : multiplier.x * (Mathf.Sin(2 * speedCurve) / 2));
        bobEulerRotation.y = (walkInput != Vector2.zero ? multiplier.y * curveCos : 0);
        bobEulerRotation.z = (walkInput != Vector2.zero ? multiplier.z * curveCos * walkInput.x : 0);
    }
}

代碼掛載在武器父類上即可
【unity小技巧】實現(xiàn)沒有動畫的FPS武器搖擺和擺動效果,# unity小技巧,unity,游戲引擎
正常情況下,我們還要實現(xiàn)武器在瞄準(zhǔn)時,減低或者禁用武器擺動效果,可以選擇在瞄準(zhǔn)時啟動和禁用SwayNBobScript腳本

public SwayNBobScript swayNBobScript;

private void Update()
{
	DetermineAim();
}

//瞄準(zhǔn)
void DetermineAim(){
	swayNBobScript.enabled = true;
	if (Input.GetMouseButton(1)){
	    swayNBobScript.enabled = false;
	} 
}

效果
【unity小技巧】實現(xiàn)沒有動畫的FPS武器搖擺和擺動效果,# unity小技巧,unity,游戲引擎

完結(jié)

贈人玫瑰,手有余香!如果文章內(nèi)容對你有所幫助,請不要吝嗇你的點贊評論和關(guān)注,以便我第一時間收到反饋,你的每一次支持都是我不斷創(chuàng)作的最大動力。當(dāng)然如果你發(fā)現(xiàn)了文章中存在錯誤或者有更好的解決方法,也歡迎評論私信告訴我哦!

好了,我是向宇,https://xiangyu.blog.csdn.net

一位在小公司默默奮斗的開發(fā)者,出于興趣愛好,最近開始自學(xué)unity,閑暇之余,邊學(xué)習(xí)邊記錄分享,站在巨人的肩膀上,通過學(xué)習(xí)前輩們的經(jīng)驗總是會給我很多幫助和啟發(fā)!php是工作,unity是生活!如果你遇到任何問題,也歡迎你評論私信找我, 雖然有些問題我也不一定會,但是我會查閱各方資料,爭取給出最好的建議,希望可以幫助更多想學(xué)編程的人,共勉~

【unity小技巧】實現(xiàn)沒有動畫的FPS武器搖擺和擺動效果,# unity小技巧,unity,游戲引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-801680.html

到了這里,關(guān)于【unity小技巧】實現(xiàn)沒有動畫的FPS武器搖擺和擺動效果的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【unity小技巧】兩種辦法解決FPS游戲槍或者人物穿墻穿模問題

    【unity小技巧】兩種辦法解決FPS游戲槍或者人物穿墻穿模問題

    當(dāng)我們開發(fā)FPS游戲時(其實3d游戲基本都會遇到這樣的問題),如果我們不做處理,肯定會出現(xiàn)人物或者槍的穿墻穿模問題,這是是一個常見的挑戰(zhàn)。 這種問題會破壞游戲的真實性和可玩性,使玩家的體驗受到影響。在這篇文章中,我將分享一些Unity小技巧,介紹如何解決F

    2024年02月03日
    瀏覽(36)
  • 【UE4/藍(lán)圖/C++】簡易FPS武器視角隨動效果

    【UE4/藍(lán)圖/C++】簡易FPS武器視角隨動效果

    【UE4/藍(lán)圖/C++】簡易FPS武器視角隨動效果 主要是實現(xiàn)了一個簡單的第一人稱的手臂跟隨相機(jī)反方向移動(也可改成同方向),用藍(lán)圖和C++分別實現(xiàn)了同樣功能 一共需要一個繼承自Character的類,類內(nèi)有一個Camera組件,和一個掛載在Camera組件下的手臂網(wǎng)格體組件,稱為Arm Mesh 一共

    2024年03月12日
    瀏覽(18)
  • Unity為什么單擊動畫文件后,沒有動畫的預(yù)覽窗口?

    Unity為什么單擊動畫文件后,沒有動畫的預(yù)覽窗口?

    單擊一個動畫文件之后,沒有出現(xiàn)動畫的預(yù)覽窗口(如圖0.1)。 動畫預(yù)覽窗口只是被隱藏了,向上拖拉右下角的雙橫線,即可打開動畫預(yù)覽窗口。(如圖0.2) 如圖0.3,動畫預(yù)覽窗口顯現(xiàn)了。

    2024年02月12日
    瀏覽(31)
  • Unity 實現(xiàn)一個FPS游戲的全過程

    Unity是一款功能強大的游戲引擎,它提供了各種各樣的工具和功能,以幫助開發(fā)者輕松地創(chuàng)建精美的3D游戲和應(yīng)用程序。在本文中,我們將使用Unity實現(xiàn)一個FPS游戲的全過程,從場景設(shè)計、角色控制、敵人AI到最終的打包發(fā)布。 對啦!這里有個游戲開發(fā)交流小組里面聚集了一幫

    2024年02月05日
    瀏覽(25)
  • 【Unity實戰(zhàn)】實現(xiàn)一款簡單的FPS游戲

    實現(xiàn)一款FPS游戲需要以下步驟: 1.創(chuàng)建場景:在Unity中創(chuàng)建3D場景,設(shè)定地形、燈光、天氣等環(huán)境,新增角色、武器等道具。 2.角色控制:創(chuàng)建角色,并添加Unity內(nèi)置的角色控制器或自定義控制器腳本,處理角色的移動、射擊、跳躍、動作等。 3.武器系統(tǒng):創(chuàng)建武器模型,添加

    2024年02月06日
    瀏覽(21)
  • Unity制作隨風(fēng)搖擺的植物

    Unity制作隨風(fēng)搖擺的植物

    今天記錄一下如何實現(xiàn)隨風(fēng)搖擺的植物,之前項目里面的植物搖擺實現(xiàn)是使用骨骼動畫實現(xiàn)的,這種方式太消耗性能,植物這種東西沒必要,直接使用頂點動畫即可。 植物不需要使用標(biāo)準(zhǔn)的PBR流程,基礎(chǔ)的顏色貼圖加上法向貼圖即可,它不區(qū)分金屬非金屬,精致一些可以加一

    2024年04月08日
    瀏覽(18)
  • 【Unity造輪子】實現(xiàn)一個類csgo的武器輪盤功能

    參考原視頻鏈接 【視頻】:https://www.youtube.com/watch?v=pmqs5zsKTTs 注意 :本文為學(xué)習(xí)筆記記錄,推薦支持原作者,去看原視頻自己手敲代碼理解更加深入

    2024年02月11日
    瀏覽(47)
  • 【制作100個unity實戰(zhàn)之2】實現(xiàn)一款簡單的FPS游戲

    實現(xiàn)一款FPS游戲需要以下步驟: 1.創(chuàng)建場景:在Unity中創(chuàng)建3D場景,設(shè)定地形、燈光、天氣等環(huán)境,新增角色、武器等道具。 2.角色控制:創(chuàng)建角色,并添加Unity內(nèi)置的角色控制器或自定義控制器腳本,處理角色的移動、射擊、跳躍、動作等。 3.武器系統(tǒng):創(chuàng)建武器模型,添加

    2024年02月04日
    瀏覽(28)
  • 100%硬核解決前端復(fù)雜動畫的秘密武器!

    100%硬核解決前端復(fù)雜動畫的秘密武器!

    哈嘍!大家好!我是程序視點的小二哥。 前端開發(fā)中,總會遇到這樣一個困境: 動畫還原 。對于前端開發(fā)工程師,有的是這樣做的。 照著設(shè)計動畫模仿,猜測動畫時長,手創(chuàng)建貝塞爾曲線…… 調(diào)整細(xì)節(jié)耗時耗力,效果還差強人意... 好不容易實現(xiàn)了,還原度卻達(dá)不到要求

    2024年02月04日
    瀏覽(18)
  • 【Unity3D小技巧】Unity3D中Animation和Animator動畫的播放、暫停、倒放控制

    【Unity3D小技巧】Unity3D中Animation和Animator動畫的播放、暫停、倒放控制

    推薦閱讀 CSDN主頁 GitHub開源地址 Unity3D插件分享 簡書地址 我的個人博客 大家好,我是佛系工程師 ☆恬靜的小魔龍☆ ,不定時更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。 在日常開發(fā)中,常常會遇到要控制動畫的播放、暫停和倒放的情況。 這篇文章就總結(jié)一下, Animation

    2024年02月02日
    瀏覽(69)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包