本文整理汇总了C#中Fighter.Grabbed方法的典型用法代码示例。如果您正苦于以下问题:C# Fighter.Grabbed方法的具体用法?C# Fighter.Grabbed怎么用?C# Fighter.Grabbed使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fighter
的用法示例。
在下文中一共展示了Fighter.Grabbed方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AttackDetect
public virtual void AttackDetect(Fighter plr)
{
bool multiHitFlag = false;
string hitText;
//std::stringstream log;
bool hitflag = true;
int atkLen;
int spI=0;
int spJ=0;
int hbLen=4;
SPoint[] plBox;
SPoint[][] spBox;
float[] plAng ={0, Mathf.PI/2, Mathf.PI, -Mathf.PI/2};
int il = 0;
if (fHelper.atkType == GRAB)
il = 1;
else
il = attackBox.trackList[fHelper.atkType].iLength;//num of tracks
AttkTrack aBox = new AttkTrack();
int polyHit=-1;
plBox = plr.GetHitBox();//loads victim hitbox into plBox
//each side is made from the vertices [i] and [+1]
int numPoly = 0; //number of polygons in a track;
int pInd = 0;//polygon index
SPoint[] pHdr = new SPoint[8];
//projectile checks
for(int p=0;p<PROJ_LMT;p++){
if(projectile[p].active){
for(int i=0;i<8;i++)
pHdr[i]=new SPoint(projectile[p].v[i].x+projectile[p].pos.x,projectile[p].v[i].y+projectile[p].pos.y);
atkLen = projectile[p].GetVNum();
for(int j = 0; j < atkLen; j++)
if(!CheckAxis(pHdr[0], projectile[p].ang[j], plBox, pHdr, hbLen, projectile[p].GetVNum()) ) //no axis intersection
hitflag = false;
if(hitflag)//test on the axis of the player hit box to confirm
for(int j = 0; j < 4; j++)
if(!CheckAxis(plBox[j], plAng[j], plBox, pHdr, hbLen, projectile[p].GetVNum())) //no axis intersection
hitflag = false;
if(hitflag){
projectile[p].active=false;
plr.GetHit(projectile[p].hitdata);
}
}
}
if(!atkTmr.IsReady()){//only continue if an attack is out
if(fHelper.atkType==GRAB){
aBox= new AttkTrack();
aBox.noHit=false;
float gCheck = grabTime/fHelper.actionTmr.GetLen();
float fCheck = fHelper.frame/fHelper.actionTmr.GetLen();
if(Mathf.Abs(fCheck-gCheck)<Time.deltaTime){
aBox.SetGrabBox(GetPos (), stats.grabRange);
float[] atAng = new float[4];
atAng[0]=0;
atAng[1]=Mathf.PI/2;
atAng[2]=Mathf.PI;
atAng[3]=-Mathf.PI/2;
//for(pInd=0;pInd<numPoly;pInd++)//iterate per poly
atkLen = 4;
hitflag=true;
attackBox.grabRange= stats.grabRange;
SPoint[] spArr = attackBox.FetchGrabRenderFrame(fHelper.frame, GetPos (), fHelper.IsFacingRight());
for(int j = 0; j < atkLen; j++)
if(!CheckAxis(spArr[j], atAng[j], plBox, spArr, hbLen, atkLen) ) //no axis intersection
hitflag = false;
if(hitflag)//test on the axis of the player hit box to confirm
for(int j = 0; j < 4; j++)
if(!CheckAxis(plBox[j], plAng[j], plBox, spArr, hbLen, atkLen)) //no axis intersection
hitflag = false;
if(hitflag){//hit
if(plr.grabbedPlr!=null){
plr.grabbedPlr. state=IDLE;
plr.grabbedPlr.Idle();
plr.grabbedPlr.fHelper.Animate ("Idle", true, 0);
plr.fHelper.Animate ("Idle", true, 0);
plr.grabbedPlr.stats.flags.mBusy=false;
plr.grabbedPlr.stats.flags.aBusy=false;
plr.grabbedPlr=null;
Idle();
fHelper.Animate ("Idle", true, 0);
}
else if(plr.stats.dodge.IsReady()){
grabbedPlr=plr;
plr.Grabbed ();}
}
}
}else{
//attack checks
//.........这里部分代码省略.........
示例2: SpecGrab
public void SpecGrab(Fighter plr)
{
if((thwLockTmr.IsReady())&&(specGrabTmr.IsReady())){
float timeLeft = atkTmr.tmr;
attackBox.trackList[SPA].hit[0][plr.stats.id.num]=true;
if(1.2f-timeLeft>0)
specThrowTmr.SetTimer(1.2f-timeLeft);
grabbedPlr=plr;
plr.Grabbed ();
}
}