local Enemy = class("Enemy");
local speed = 5;
function Enemy:ctor(go) --ctor是無參構(gòu)造铺厨,只要new就會執(zhí)行
self.gameObject = go;
self.transform = go.transform;
--增加碰撞
local luaTrigger = self.gameObject:AddComponent(typeof(LuaTrigger2D));
luaTrigger:SetExitFunc(self.OnTriggerExit,self);
UpdateBeat:Add(self.Update,self);
end
function Enemy:Update()
self.transform:Translate(Vector3.down*speed * Time.deltaTime);
end
--增加碰撞
function Enemy:OnTriggerExit(collision)
print("有碰撞產(chǎn)生");
UpdateBeat:Remove(self.Update,self);
destroy(self.gameObject); --functions中有destroy方法返回Destroy扩灯,所以不用大寫
end
return Enemy;
--是將DestroyCollider中碰撞代碼轉(zhuǎn)入敵人中榴徐,類中需要:Add(self.Update) Enemy:Update()
--不是類一般是: Add(this.OnTriggerExit) DestroyCollider.OnTriggerExit
using UnityEngine;
using System.Collections;
using LuaInterface;
public class LuaTrigger2D : MonoBehaviour {
////增加的觸發(fā)器腳本
//protected LuaFunction enterFunc; //lua的方法
//protected LuaFunction exitFunc;
//public void SetEnterFunc(LuaFunction func)
//{
// enterFunc = func;
//}
//public void SetExitFunc(LuaFunction func)
//{
// exitFunc = func;
//}
//private void OnTriggerEnter2D(Collider2D collision)
//{
// if (enterFunc!=null) //就是lua中预茄,使用SetEnterFunc方法A隔显,A方法中傳入B方法為參數(shù)崎溃,如果B為空蜻直,就不激活lua方法B
// {
// enterFunc.Call(collision); //如果傳入的方法B不為空,就激活傳入的方法B
// }
//}
//private void OnTriggerExit2D(Collider2D collision) //出去時候觸發(fā)袁串,出發(fā)方法是一直檢測不需要調(diào)用
//{
// if (exitFunc != null)
// {
// exitFunc.Call(collision); //修改:B方法中加入?yún)?shù)概而,lua方法B帶參,lua可以接收到囱修,方便刪除物體
// }
//}
//增加的觸發(fā)器腳本
LuaTable table;
protected LuaFunction enterFunc; //lua的方法
protected LuaFunction exitFunc;
public void SetEnterFunc(LuaFunction func,LuaTable tb=null)
{
enterFunc = func;
table = tb;
}
public void SetExitFunc(LuaFunction func, LuaTable tb = null)
{
exitFunc = func;
table = tb;
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (enterFunc != null) //就是lua中赎瑰,使用SetEnterFunc方法A,A方法中傳入B方法為參數(shù)蔚袍,如果B為空乡范,就不激活lua方法B
{
if (table!=null)
{
enterFunc.Call(table,collision); //如果傳入的方法B不為空配名,就激活傳入的方法B
}
}
}
private void OnTriggerExit2D(Collider2D collision) //出去時候觸發(fā),出發(fā)方法是一直檢測不需要調(diào)用
{
if (exitFunc != null)
{
if (table != null)
{
exitFunc.Call(table,collision); //修改:B方法中加入?yún)?shù)晋辆,lua方法B帶參渠脉,lua可以接收到,方便刪除物體
}
}
}
}