學習游戲制作記錄(改進投擲劍的行為)7.27

1.實現劍跟隨飛行方向旋轉

修改劍的預制體使劍的朝向對準右x軸

Sword_Skill_Contorl腳本:

? ? private void Update()
{
transform.right = rb.velocity;//時刻更新位置
}

2.實現劍插入地面或者敵人

修改預制體為觸發器

Sword_Skill_Contorl腳本:

? ? private bool canRotate=true;

? ? private void Update()
{
if(canRotate)//可以旋轉才能設置速度
{
transform.right = rb.velocity;

? ? ? ? }

? ? ? ?
}

? ? private void OnTriggerEnter2D(Collider2D collision)
{
canRotate = false;//不能旋轉
cd.enabled = false;//關閉碰撞器

? ? ? ? rb.isKinematic = true;//設置為Kinematic,這是一個運動學狀態
rb.constraints = RigidbodyConstraints2D.FreezeAll;//鎖定xyz

? ? ? ? transform.parent = collision.transform;//將劍設置為碰撞到物體的子對象
}

演示:

3.玩家只能持有1把劍即當一把劍被投擲時不能進入瞄準狀態

Player腳本:

? ? public GameObject sword { get; private set; }//劍的對象

? ? public void AssignNewSword(GameObject _newSword)//分配
{
sword = _newSword;
}

? ? public void clearTheSword()//銷毀
{
Destroy(sword);
}


Sword_Skill腳本:

player.AssignNewSword(newSword);//在CreatSword()中調用

PlayerGroundedState腳本:

? ? ? ? if(Input.GetKeyDown(KeyCode.Mouse1)&&!_Player.sword)//不持有劍才能按下鼠標右鍵
{
_PlayerStateMachine.ChangeState(_Player.AimSword);
}

4.玩家再此按下鼠標右鍵時可以回收劍

Sword_Skill_Control腳本:

? ? [SerializeField] private float returnSpeed=12f;//返回的速度

? ? private bool isReturning;//是否返回

? ? public void SetupSword(Vector2 _dir,float _gravityScale,Player _player)//傳入player,作為返回目標,從Sword_Skill腳本中傳入
{
rb.velocity = _dir;
rb.gravityScale = _gravityScale;

? ? ? ? player = _player;

? ? ? ? anim.SetBool("rotation", true);//設置旋轉動畫
}

? ? public void ReturnSword()
{
rb.isKinematic=false;
transform.parent = null;//取消原父對象

? ? ? ? isReturning = true;//開始返回
}

? ? private void Update()
{
if(canRotate)
{
transform.right = rb.velocity;

? ? ? ? }

? ? ? ?if(isReturning)
{
transform.position = Vector2.MoveTowards(transform.position, player.transform.position, returnSpeed*Time.deltaTime);//向玩家移動

? ? ? ? ? ? if(Vector2.Distance(transform.position, player.transform.position)<1)//距離小于1時銷毀
{
player.clearTheSword();
}
}
}

PlayerGroundedState腳本:

? ? private bool HasNoSword()//是否投擲出劍
{
if (!_Player.sword)//未投擲可以進入瞄準
{
return true;
}

? ? ? ? _Player.sword.GetComponent<Sword_Skill_Control>().ReturnSword();//已經投擲則調用返回函數
return false;

}

? ? ? ? if(Input.GetKeyDown(KeyCode.Mouse1)&&HasNoSword())//Update中
{
_PlayerStateMachine.ChangeState(_Player.AimSword);
}

演示:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/90865.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/90865.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/90865.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

嵌入式軟件面試八股文

目錄 一、指針函數和函數指針 二、指針的大小 三、sizeof 和 strlen 區別 四、數組指針和指針數組 五、C語言里面內存分配的方式 六、struct結構體和union聯合體的區別 八、數組和鏈表的區別 九、寫一個宏這個紅返回輸入參數比較小的一個 十&#xff0c;使用#include<…

Gradle#Plugin

查看任務來自那個插件 /gradlew tasks --all <taskName>Java Plugin Java Library Plugin

滲透高級-----測試復現(第三次作業)

文章目錄測試復現一&#xff0c;環境搭建二&#xff0c;通過VS Code連接cacti三&#xff0c;測試測試復現 一&#xff0c;環境搭建 1&#xff0c;在ubuntu虛擬機上安裝MySql數據庫&#xff1a; apt-get upgrade # 更新apt-get upgrade apt-get update # 更新apt-ge…

LINUX727 磁盤管理回顧1;配置文件回顧

邏輯卷快照 快照為什么這么小RAID 磁盤陣列 raid 0 raid 1 raid5 raid10raid0 raid1 raid5 raid6 raid10 rank;create raid0 mdadm -c /dev/md0 -l 0 -n 2 /dev/sdb3 /dev/sdb4 raid1 mdadm -c /dev/md1 -l 1 -n 2 /dev/sdb5 /dev/sdb6 raid5 mdadm -c /dev/md5 -l 5 -n 3 -x …

【筆記】Einstein關系式 D = ukBT 的推導與應用研究

文章目錄從漲落理論和能量均分定理的數學推導基于平衡統計力學的推導1. 漂移流的來源&#xff1a;Jdrift?μρ?UJ_{drift} -μρ?UJdrift??μρ?U物理機制粒子流的形成2. 擴散流的來源&#xff1a;Jdiffusion?D?ρJ_{diffusion} -D?ρJdiffusion??D?ρ3. 熱平衡要…

AJAX 原理_第一節_XHR 對象

文章目錄1.AJAX原理1.1 初識XML1.2 查詢參數1.3 案例-地區查詢1.4 案例-注冊-設置請求頭1.AJAX原理 1.1 初識XML AJAX原理是什么? XMLHttpRequest對象 XHR對象定義: 通過XMLHttpRequest可以在不刷新頁面的情況下請求特定URL,獲取數據.這允許頁面在不影響用戶操作的情況下,更…

BeautifulSoup 使用詳解與實戰示例

BeautifulSoup 是一個用于解析HTML和XML文檔的Python庫&#xff0c;它能夠將復雜的HTML文檔轉換成一個復雜的樹形結構&#xff0c;使得我們可以輕松地查找和提取所需的內容。下面我將詳細介紹BeautifulSoup的使用流程&#xff0c;并結合實際示例進行說明。一、安裝與基礎使用1.…

LangChain實戰——實現多輪對話 + Function Calling

隨著大語言模型&#xff08;LLMs&#xff09;的迅猛發展&#xff0c;“Function Calling”&#xff08;函數調用&#xff09;逐漸成為一個重要的能力&#xff0c;它使得模型不僅能聊天&#xff0c;還能像“中控大腦”一樣調用外部函數完成具體任務&#xff0c;比如查天氣、調用…

湖南(源點咨詢)市場調研 如何在行業研究中快速有效介入 起頭篇

行業研究從業人員經常需要在承接研究案子后快速的摸清委托方所在行業。而俗話說&#xff0c;隔行如隔山&#xff0c;快速了解行業&#xff0c;主要用于行業分析報告及為市場細分準入進行前期鋪墊&#xff0c;要想摸清一個行業&#xff0c;需要長期持續的跟蹤。了解一個行業&…

【c++】從 “勉強能用” 到 “真正好用”:中文問答系統的 200 行關鍵優化——關于我用AI編寫了一個聊天機器人……(16)

先看核心結論&#xff1a;兩段代碼的本質區別如果用一句話總結兩段代碼的差異&#xff1a;前者是 “帶中文支持的問答系統”&#xff0c;后者是 “真正適配中文的問答系統”。具體來說&#xff0c;兩段代碼的核心功能都是 “加載問答數據→接收用戶輸入→匹配答案”&#xff0c…

VR 技術在污水處理領域的創新性應用探索?

在廣州&#xff0c;VR 污水處理技術的應用可謂是多點開花。首先&#xff0c;在污水處理流程模擬方面&#xff0c;工程師們利用 VR 技術創建了高度逼真的污水處理廠三維模型&#xff0c;將污水處理的整個流程&#xff0c;從預處理去除大顆粒雜質和懸浮物&#xff0c;到初級處理通…

深度學習暑期科研項目(兩個月發EI論文)

深度學習暑期科研項目&#xff08;8周發EI論文&#xff09; 哈爾濱工業大學博士的六大選題對本科生而言&#xff0c;越早接觸系統的科研訓練開始上手科研項目&#xff0c;就越能在未來的升學求職中占據很大的優勢。暑假是提升個人簡歷、豐富科研經歷的最佳時期&#xff01;哈爾…

【RH134 問答題】第 1 章 提高命令行運行效率

目錄#!/bin/bash 是什么意思&#xff1f;PATH 變量有什么重要作用&#xff1f;echo 命令的作用是什么&#xff1f;解釋下列正則表達式的含義簡述正則表達式和 shell 模式匹配的區別&#xff0c;在 shell 命令使用正則表達式的時候需要注意什么&#xff1f;#!/bin/bash 是什么意…

OpenCV(02)圖像顏色處理,灰度化,二值化,仿射變換

【OpenCV&#xff08;01&#xff09;】基本圖像操作、繪制&#xff0c;讀取視頻 目錄圖像顏色加法灰度化二值化仿射變換圖像顏色加法 顏色加法 import cv2 as cv import numpy as np#讀圖 cao cv.imread(E:\hqyj\code\opencv\images\cao.png) pig cv.imread(E:\hqyj\code\o…

嵌入式——單片機的獨立按鍵

一、目的功能通過開發板上的獨立按鍵k1控制d1指示燈亮滅&#xff0c;k1一次亮再按一次滅。二、硬件原理圖三、消抖理解&#xff08;一&#xff09;核心原理&#xff1a;當事件被重復觸發時&#xff0c;設置一個延遲&#xff0c;只有在該時間內沒有新的事件被觸發&#xff0c;才…

機器學習的工作流程

&#x1f31f; 歡迎來到AI奇妙世界&#xff01; &#x1f31f; 親愛的開發者朋友們&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能領域的探索者與分享者&#xff0c;很高興在CSDN與你們相遇&#xff01;&#x1f389; 在這里&#xff0c;我將持續輸出AI前沿技術、實…

聚類里面的一些相關概念介紹闡述

一、性能度量外部指標&#xff1a;聚類結果與某個“參考模型”進行比較&#xff1b;系數&#xff1a; &#xff0c;其中的 表示樣本是否屬于某類簇&#xff1b; 指數&#xff1a;&#xff0c;其中 表示樣本在兩個聚類結果中都是同一類簇&#xff0c; 表示在其中一個聚類結果中…

mmap機制

先看這個 MMAP 機制通俗易懂-CSDN博客 一句話 **mmap(memory map)是操作系統提供的“把文件或設備直接映射到進程虛擬地址空間”的機制,Java 里對應 `MappedByteBuffer`。** --- ### 1. 技術本質 - 系統調用:`mmap()`(POSIX)、`CreateFileMapping`(Windows)。 …

嵌入式硬件篇---驅動板

制作 ESP32 驅動板的核心是 “搭建 ESP32 與外設之間的橋梁”—— 因為 ESP32 的 GPIO 引腳輸出電流很小&#xff08;最大 20mA&#xff09;&#xff0c;無法直接驅動大功率設備&#xff08;如電機、繼電器、電磁閥等&#xff09;&#xff0c;驅動板的作用就是放大電流 / 功率&…

UniappDay01

1.技術架構2.創建uniapp項目 通過HBuilderX創建 官網安裝創建uniapp vue3項目安裝uniapp vue3的編譯器在工具欄啟動微信小程序開啟服務端口模擬器窗口分離和置頂 通過命令行創建 3.pages.json和tabbar案例 pages.json用來配置路由&#xff0c;導航欄&#xff0c;tabbar等頁面類…