[flash]movieClip的碰撞與重疊

LINEで送る

一般來說,我們要在flash中兩個movieClip是否產生了碰撞或重疊
我們會使用hitTestObject()或是hitTestPoint()
但是hitTestObject()的範圍固定在矩形,在很多狀況下並不適合
hitTestPoint()雖然可以破除矩形的限制
但只能做movieClip跟point的判斷
為了解決這個問題
有人就開發了好用的class出來分享啦!!
as2版as3版(我當然是用as3來測試囉!)


真的是讓這件事情變得無比的愉快
只要判斷:

	if(HitTest.complexHitTestObject(hit_mc1, hit_mc2 , 5)){
		//撞到了!
	}else{
		//還沒還沒....
	}

就可以做你想做的事情啦
只有一點是要注意的
HitTest只能判斷movieClip類別的碰撞
也就是說如果是用addChild出來的物件必須在轉形回movieClip才能用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function makeCamera():void{
		var num:Number =runNum(5);
		var c:MovieClip = new camera();
		c.gotoAndStop(num);
		c.x = runNum(190);
		c.y = runNum(27)+70;
		c.rotation = runNum(359);
		c.addEventListener(Event.ADDED_TO_STAGE,killOrNot);
		this.addChild(c);
}
 
function killOrNot(e:Event):void {
	if(HitTest.complexHitTestObject(MovieClip(e.target), hit_mc , 5)){
		cameraArr.push(e.target);
	}else{
		e.target.parent.removeChild(e.target)
	}
}

說點什麼吧!

46 個留言

可以問個問題嗎..

我最近再用一個詞曲同步..

按播放 跟 發佈看都沒有問題 可是測試影片 卻發現實際上會慢一~兩秒

可以幫忙解惑嗎= =??

其實我也找了很多資料

我看網路上有些說再放音樂的影格上面 再由事件=>串流之後

就會跑出"SWF 包含一個聲音項目的多個副本" 請問是什麼意思= =??

我不太懂發佈跟測試影片不是一樣嗎?

也不知道”SWF 包含一個聲音項目的多個副本”是啥意思耶@@

我是建議用AS控制試試看可不可以解決時間差的問題!

 
 

版大!! 那個遊戲的語法我實在是卡關了,只好像擱著
http://www.wretch.cc/blog/notdogs/7761280
這一篇

我現在先進行另一個
這可能會是我門樂團之後的網站>>
http://www.wretch.cc/blog/notdogs/7766520
而且進第一個門以後的特效很讚喔XD

有空可以來看看~

恩 有空在去給你捧場~

 
 

版大!!多謝!!我釐清了這部分的觀念!!
不過我碰到更詭異的..我總覺得我要去拜拜了 XD
就是 我設定主角揮出劍氣5道 上下左右方向都有設定
但是只有往上揮時 會出現 null…那個訊息
後來我慢慢檢查..發現往上揮的其中一個影格..只能有三道劍氣!!!
而且是只有那個影格!!!
如果5道 4道就會出現null…但是三道就可以!!!
可是其他方向5道都沒問題呀..
這到底是 ~~~~~~~ XD 農曆七月嗎 XD

恩…其實我看不太懂你的問題@@
或許你可以複製其他方向的劍氣來改成向上的試試…

 
 

版大!!
我最近仍在研究AS3中..目前正陷於邏輯與語法茫茫大海裡 orz
不過我想請教一個應該算是基本的 可是書上都沒有提的問題 ..就是~
如果我設定
if (某條件){
某_mc.某某_mc.gotoAndPlay();
}
那是不是某_mc所有的影格裡都必須要有某某_mc的存在呢?
如果有個影格裡沒有某某_mc,是不是就會出現
無法存取 Null 物件參考的屬性或方法。
的錯誤訊息?
這個問題我懷疑很久了說XD

感激!!

至少在你要某某_mc去gotoAndPlay的時候要存在某_mc中
當然某_mc也要存在…
不然…flash那知道某某_mc是哪位阿
有怎麼叫他gotoAndPlay勒..

 
 

版大!!XD
我研究出新的移動語法XD
變得很流暢!!!希望版大可以抽空來看看阿XD
http://www.wretch.cc/blog/notdogs/7758781

剩下"跳上物體"的元素還沒研究出來!!

呵呵 不錯很可愛阿
再接再厲囉!!

 
 

版大!!
http://www.wretch.cc/blog/notdogs/7758781

成功了XD
正宗super mario XD

恩 恭喜阿
還是自己解決比較爽吧~^^

 
 

版大~我問題解決了!!

匯出一切正常
但是上傳到streetvoice後~卻無法執行..
音樂依樣呈現混亂狀…這是為什麼呢!!?

 

喔喔~謝謝!!
我昨天弄了一個搭配聲音的瑪莉兄弟!
可是我匯出的時候出現"SWF 包含一個聲音項目的多個副本"
版大~請問這是什麼意思呢?
上傳到網路 本來安排好的聲音檔都會亂掉說!!
多次叨擾..真是感激不盡!!

 

版大!!
我發現一個很怪的現象…
我上上個作品 設定主角死亡後flash回到第一個影格
而為了讓場景都會恢復成原先的樣子,我還要在第一影個一個一個去抓元件的座標…但是剛剛做好的這個卻不用!!回到第一影格後..元件也都自動歸位了說! 兩個作品不同的地方在於 之前的是靠玩家去控制場景是否移動,現在的則是一播放場景就自己移動….其中的不同真是微妙啊!!!

以後練習用init()來做初始化設定
沒有影格也可以很快的回到原始狀態~

 
 

版大!! 真是感激不盡!!
因為我在flash官網只查到.stopImmediatePropagation這個語法..而且官網的介紹都很文鄒鄒…..orz
多虧版大指點~我的新作品完成了>>
http://www.wretch.cc/blog/notdogs/7758070

 
 

版大~我研究了很久~因為我跳至第二場景的時候,第一場景的event好像還是會繼續執行,我想是不是要用 event.stopImmediatePropagation();來停止他的執行,我寫出來是這樣>>
function stopevent(event:Event):void {
event.stopImmediatePropagation();
}
stage.addEventListener(Event.ENTER_FRAME,stopevent);

結果當然是無法執行@@"
希望版大能只點一二!感激!!!

我是覺得應該先試一下removeEventListener

 
 

版大!!!!!我完成了!!!!!!一半~~~XD
http://www.wretch.cc/blog/notdogs/7752222
實在是..本來設定的加分星星仍然搞不定...
唉~我要靈魂出竅了orz

呵呵 讓我想到Wii Fit中那個在何中滾泡泡的遊戲

 
 

版大XD
它不轉就你轉
轉一下可能就過了
我把這個列為我的座右銘!!!我繼續去奮鬥了!!!! ><

 
 

喔喔! 真是感謝阿!!
唉~版大!不知道您學習的過程中有沒有跟我依樣~!常常遇到很無解的問題!
像我曾經 只是在舞台上加了幾個中文,就變得無法測試影片!!!真的很怪!!
還有同樣的線段,在舞台下方正常顯示,但是到了舞台上方卻無故變粗!!
感覺好無力阿T_T orz

我覺得程式其實很好騙
它不轉就你轉
轉一下可能就過了~~^^

 
 

我正在努力~版大~那請問一下~!
妳的程式碼在hit_mc2後面有個5是指什麼呢?

那是判斷的準確值
預設是1
平常可以不用管他用1就好

 
 

版大!經過您的指點我的小遊戲也快完成了!但場景測試時會出現這錯誤碼:
TypeError: Error #1009: 無法存取 Null 物件參考的屬性或方法。
at HitTest$/complexIntersectionRectangle()
at HitTest$/complexHitTestObject()
at _fla::MainTimeline/nextscene()
唉~遊戲雖小,卻讓我一夜白髮阿!!
又要請版大您指點指點了!! orz

我猜有可能是你在用HitTest時有地方沒注意到傳進了NULL
先退一步簡化一下程式
抽絲剝繭的把BUG找出來

 
 

版大XD
真的可以拉XD 天阿~太愛您拉~~ XD 我想到頭殼要開花 腦將要沸騰拉XD
等我把作品弄好 傳給網址給您瞧瞧XD

 
 

版大ˊˋ 不好意思又來麻煩您~
因為我的書真的寫的很不清楚..我看書上寫的匯入as檔的介紹
寫出這個>>var HIT:HitTest = new HitTest();
結果果然無法執行~"~ HitTest在我的as裡面還是黑色字體..
不知道版大願不願意再傳受一二 orz

恩 不用new他拉
參考一下我的程式碼
把hit_mc1跟hit_mc2換成你要判斷的movieclip試試看

 
 

版大
這是我最近做的>>有興趣可以來看看喔XD
http://tw.streetvoice.com/video/user-video.asp?tn=17873
用空白鍵集氣,方向鍵控制,但是我發現把這個作品貼到無名小站的話~
程式就會出現錯亂..到底是為什麼呢 orz
不知道版大知不知道原因呢? 感激不盡><

試試看這樣子的語法
<object height="60″ width="190″ data="xxx.swf" type="application/x-shockwave-flash"><param value="xxx.swf" name="movie"/></object>

 
 

不知道版大當初是怎麼學習AS的呢~?
我雖然買了幾本書,但是感覺寫得都不詳盡
常常同樣的程式碼,在她的範例可以執行,我自己寫就無法執行~
每次都想破頭..才能搞懂一個語法
我也去知名電腦中心問過,但是她們程度都滿差的 >_<"
去那裡學浪費錢…不知道版大有沒有什麼建議@@"

我剛入門也是先到資策會的多媒體班上課
當時教flash的是林新德老師
在市面上也買的到他的書
不過…多利用flash的F1…
其實裡面也有很多東西可以慢慢看了

 
 

喔喔!!
真的是太感謝了!!T_T
大恩大德!!再受小第一拜 orz

 
 

喔喔!!
原來要有那個!!@@
可是我不知道要怎麼使用那個檔案ㄝ..
不知道版大可否撥冗相授!! orz
先受小弟一拜 orz

我把它的as檔放進來了(到文章中按下載)
下載回去後跟要編輯的fla檔放同一個資料夾就可以用了
不過正確的引用as檔案還是要翻一下書比較好喔!

 
 

大大XD
不好意思 不知道為什麼留言被截掉一半
我想請教的是..
上面提到的HitTest 我key到AS3以後,她沒有變成藍色字體…
是因為版本的關係嗎?我是CS3…感恩感恩!

 
 

大大~!
請教一下!
我最近也在學AS3
可是有好多問題阿!!
我買書來看,作者也都只有教一半>.<

感恩!!

 
 

留言板RSS 引用 URI

說點什麼吧!