在Unity中通過動態(tài)畫線來實現(xiàn)碰撞(2D)

之前在很多2D游戲中庞溜,發(fā)現(xiàn)有些小游戲可以通過手指動態(tài)在屏幕中繪制線來阻擋小球碰撞破讨。好奇實現(xiàn)方法孤页,所以自己學(xué)習(xí)了一下尔苦,效果還行。

參考鏈接:https://www.bilibili.com/video/BV1Et41177to?from=search&seid=6793552372166214965

主要用到的組件是Line Render、dege ColliderBox2D


這是實現(xiàn)的效果

1允坚、具體實現(xiàn)邏輯是魂那,通過獲取手指在屏幕上的坐標(biāo)并轉(zhuǎn)換成世界坐標(biāo),賦值給LineRender組件來生成mesh線

2屋讶、將賦值給LineRender的點數(shù)據(jù)記錄到List中冰寻,在繪制mesh線完成后。將數(shù)據(jù)全部賦值給degeColliderBox2D碰撞體

3皿渗、關(guān)于設(shè)置一些其他的參數(shù)startWidth 斩芭、endWidth 設(shè)置線寬

????????????lr = newLine.GetComponent<LineRenderer>();

? ? ? ? ? ? lr.startWidth = LineWidth;

? ? ? ? ? ? lr.endWidth = LineWidth;


4、設(shè)置碰撞體大小的參數(shù)edgeRadius?

edgeCollier.edgeRadius = LineWidth / 2;


下面是組件配置截圖和代碼乐疆,有興趣的可以研究下划乖。因為很簡單,所以我說的比較籠統(tǒng)挤土,如果你看不懂琴庵,可以看看我發(fā)的參考鏈接,那個是視頻比較詳細仰美,一步步教你怎么做


組件配置

源碼:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class DrawColliderLine : MonoBehaviour

{

? ? public GameObject line;

? ? public GameObject Knob;

? ? // 線寬

? ? private const float LineWidth = 0.1f;

? ? private LineRenderer lr;

? ? private EdgeCollider2D edgeCollier;

? ? private int index;

? ? private Vector3 upPoint = Vector3.zero;

? ? private List<Vector2> colliderPos = new List<Vector2>();

? ? void Start()

? ? {


? ? }


? ? void Update()

? ? {

? ? ? ? // 鼠標(biāo)按下創(chuàng)建一條線的obj

? ? ? ? if(Input.GetMouseButtonDown(0))

? ? ? ? {

? ? ? ? ? ? // 清理上一條線的是碰撞盒數(shù)據(jù)

? ? ? ? ? ? colliderPos.Clear();

? ? ? ? ? ? GameObject newLine = Instantiate(line, line.transform.position, Quaternion.identity).gameObject;

? ? ? ? ? ? newLine.transform.SetParent(this.transform);

? ? ? ? ? ? edgeCollier = newLine.GetComponent<EdgeCollider2D>();

? ? ? ? ? ? lr = newLine.GetComponent<LineRenderer>();

? ? ? ? ? ? lr.startWidth = LineWidth;

? ? ? ? ? ? lr.endWidth = LineWidth;

? ? ? ? ? ? index = 0;

? ? ? ? }

? ? ? ? // 鼠標(biāo)按住不放迷殿,根據(jù)鼠標(biāo)位置添加點位置

? ? ? ? if (Input.GetMouseButton(0))

? ? ? ? {

? ? ? ? ? ? Vector3 point = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 1));

? ? ? ? ? ? if (lr != null)

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if(upPoint != point)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? // 設(shè)置LineRender點數(shù)量和位置

? ? ? ? ? ? ? ? ? ? index++;

? ? ? ? ? ? ? ? ? ? lr.positionCount = index;

? ? ? ? ? ? ? ? ? ? lr.SetPosition(index - 1, point);

? ? ? ? ? ? ? ? ? ? // 記錄需要碰撞的位置

? ? ? ? ? ? ? ? ? ? colliderPos.Add(new Vector2(point.x, point.y));

? ? ? ? ? ? ? ? ? ? upPoint = point;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? // 鼠標(biāo)抬起,結(jié)束畫線咖杂,并根據(jù)數(shù)據(jù)生成碰撞盒

? ? ? ? if (Input.GetMouseButtonUp(0))

? ? ? ? {

? ? ? ? ? ? // 設(shè)置LineRender點碰撞和位置

? ? ? ? ? ? edgeCollier.points = colliderPos.ToArray();

? ? ? ? ? ? edgeCollier.edgeRadius = LineWidth / 2;

? ? ? ? ? ? Knob.GetComponent<Rigidbody2D>().gravityScale = 1f;

? ? ? ? }

? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庆寺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子诉字,更是在濱河造成了極大的恐慌懦尝,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壤圃,死亡現(xiàn)場離奇詭異陵霉,居然都是意外死亡,警方通過查閱死者的電腦和手機伍绳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門踊挠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人冲杀,你說我怎么就攤上這事效床。” “怎么了漠趁?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵扁凛,是天一觀的道長忍疾。 經(jīng)常有香客問我闯传,道長,這世上最難降的妖魔是什么卤妒? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任甥绿,我火速辦了婚禮字币,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘共缕。我一直安慰自己洗出,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布图谷。 她就那樣靜靜地躺著翩活,像睡著了一般。 火紅的嫁衣襯著肌膚如雪便贵。 梳的紋絲不亂的頭發(fā)上菠镇,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機與錄音承璃,去河邊找鬼利耍。 笑死,一個胖子當(dāng)著我的面吹牛盔粹,可吹牛的內(nèi)容都是我干的隘梨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼舷嗡,長吁一口氣:“原來是場噩夢啊……” “哼轴猎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咬崔,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤税稼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垮斯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郎仆,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年兜蠕,在試婚紗的時候發(fā)現(xiàn)自己被綠了扰肌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡熊杨,死狀恐怖曙旭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晶府,我是刑警寧澤桂躏,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站川陆,受9級特大地震影響剂习,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一鳞绕、第九天 我趴在偏房一處隱蔽的房頂上張望失仁。 院中可真熱鬧,春花似錦们何、人聲如沸萄焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拂封。三九已至,卻和暖如春鹦蠕,著一層夾襖步出監(jiān)牢的瞬間烘苹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工片部, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留镣衡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓档悠,卻偏偏與公主長得像廊鸥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辖所,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容