Exemple #1
0
 public override void OnEnter(GameObject obj)
 {
     base.OnEnter(obj);
     master = obj.GetComponent <UnitCard>().unit;
     switch (obj.GetComponent <UnitCard>().type)
     {
     case UnitType.creature:
         CircleMapUnit c = mapField.Get(MapType.Circle) as CircleMapUnit;
         c.maptype  = MapType.Circle;
         c.unittype = UnitType.creature;
         c.positon  = new Vector2(data.position.x, data.position.z);
         c.id       = obj.GetComponent <UnitCard>().unit.Id;
         c.speed    = new Vector2(data.forward.x * data.speed, data.forward.z * data.speed);
         c.radius   = data.bodySize.x;
         c.unit     = master;
         mapField.AddUnit(c);
         break;
     }
 }
Exemple #2
0
    public bool CheckIsMoved(CircleMapUnit unit)
    {
        Vector2 start = unit.positon;
        Vector2 end   = unit.positon + unit.speed;

        // check static gird
        if (!IsGridMoved(end, unit.radius))
        {
            return(false);
        }
        foreach (var u in creatureUnits)
        {
            if (IsCollided(unit, u.Value))
            {
                return(false);
            }
        }
        return(true);
    }
Exemple #3
0
 private bool IsCollided(MapUnit source, MapUnit target)
 {
     switch (source.maptype)
     {
     case MapType.Circle:
         CircleMapUnit s = source as CircleMapUnit;
         if (target.maptype == MapType.Circle)
         {
             CircleMapUnit t = target as CircleMapUnit;
             if (Vector2.Distance(source.positon + source.speed, target.positon + target.speed) > s.radius + t.radius)
             {
                 return(false);
             }
             else
             {
                 return(true);
             }
         }
         break;
     }
     return(false);
 }