コード例 #1
0
ファイル: WarriorUnit.cs プロジェクト: gormel/rts
        private static Vector2 PositionOf(RtsGameObject target)
        {
            if (target is Building)
            {
                return(((Building)target).Size / 2 + target.Position);
            }

            return(target.Position);
        }
コード例 #2
0
ファイル: WarriorUnit.cs プロジェクト: gormel/rts
        private float DistanceTo(RtsGameObject target)
        {
            if (target is Building)
            {
                var p  = PositionOf(target);
                var s  = ((Building)target).Size;
                var dx = Math.Max(Math.Abs(Position.x - p.x) - s.x / 2, 0);
                var dy = Math.Max(Math.Abs(Position.y - p.y) - s.y / 2, 0);

                return(dx * dx + dy * dy);
            }

            return(Vector2.Distance(Position, PositionOf(target)));
        }
コード例 #3
0
ファイル: WarriorUnit.cs プロジェクト: gormel/rts
 public AttackOrder(WarriorUnit unit, RtsGameObject target)
 {
     mUnit   = unit;
     mTarget = target;
 }