Exemplo n.º 1
0
 public static ItemEntity instantiateShotEntity(ShotItemBasis shotitem, Vector2 pos, MyCharacterController.Direction dir)
 {
     Debug.LogFormat("Create ShotEntity1 {0}:{1} Dir:{2}",shotitem.Name,pos,dir);
     ShotItemBasis shotentity = shotitem.splitShotItem(1);
     //shotentity.remove();
     ItemEntity ret = ObjectEntityFactory.enableItemEntity(shotentity, pos);
     Debug.LogFormat("Create ShotEntity2 {0}:{1}", ret.Object.Name, pos);
     ret.shotinit(dir);
     //ret.setActive(true);
     //ret.SpriteRenderer.enabled = false;
     //GameController.spawaObject(ret);
     return ret;
 }
Exemplo n.º 2
0
 public CMD_Shot(PlayerController owner, ShotItemBasis target)
     : base(owner)
 {
     Target = target;
 }
Exemplo n.º 3
0
 public static List<Collider2D> searchShotTarget(MyCharacterController.Direction dir, Vector2 centerpos, ShotItemBasis shotitem, bool wallpenatrable = false)
 {
     List<Collider2D> ret = new List<Collider2D>();
     switch (shotitem.BasisParameter.RangeType)
     {
         case ShotItemBasis.RangeType.LINE:
             int range = wallpenatrable ? PenetrateFlyingDistance : shotitem.BasisParameter.ShotRange;
             var hits = getHitTargetsFromLine(centerpos, range, dir); //Physics2D.RaycastAll(centerpos, direction, range, hitmask);
             if (hits.Count != 0) {
                 RaycastHit2D near = hits[0];
                 if (near.distance <= range && !wallpenatrable)
                 {
                     //Debug.Log(string.Format("{0},{1}",Mathf.FloorToInt(near.distance),Mathf.CeilToInt(near.distance)));
                     //range = Mathf.FloorToInt(near.distance);
                     //if (near.transform.tag.Equals(TagList.Character)) range = Mathf.CeilToInt(near.distance);
                     //Debug.Log(flyingdistance);
                     ret.Add(hits[0].collider);
                 }
                 else if (wallpenatrable)
                 {
                     ret.AddRange(hits.ConvertAll(h => h.collider));
                 }
             }
             //GameController.PlayingLogger.addLogFormat("Hits:{0} WP:{1}",ret.Count,wallpenatrable);
             break;
         case ShotItemBasis.RangeType.AREA:
             Vector2 delta = Vector2.one * Mathf.CeilToInt((shotitem.BasisParameter.ShotRange / 2f));
             ret = new List<Collider2D>(Physics2D.OverlapAreaAll(centerpos - delta, centerpos + delta, hitmask));
             break;
         default:
             break;
     }
     ret.RemoveAll(hit => hit.transform.position.Equals(centerpos));
     ret.Sort((a, b) => (int)((a.transform.position - (Vector3)centerpos).sqrMagnitude - (b.transform.position - (Vector3)centerpos).sqrMagnitude));
     //if (!wallpenatrable && ret.Count > 1) ret.RemoveRange(1, ret.Count - 1);
     return ret;
 }
Exemplo n.º 4
0
 internal static Sprite getShotIcon(ShotItemBasis shotitem,MyCharacterController.Direction dir)
 {
     Sprite ret = OtherIcon;
     switch (shotitem.BasisParameter.Type)
     {
         case ShotItemBasis.ShotType.ARROW:
             ret = ShotItemIcon1;
             break;
         case ShotItemBasis.ShotType.CARD:
             ret = ShotItemIcon3;
             break;
         case ShotItemBasis.ShotType.STONE:
             ret = ShotItemIcon2;
             break;
     }
     return ret;
 }
Exemplo n.º 5
0
 public ShotItemDamage(MyCharacterController attacker, MyCharacterController target, ShotItemBasis item)
     : base(attacker,target)
 {
     Item = item;
 }