| 
				
				C# помогите
				 | 
 | 
| Labirintik | Дата: Понедельник, 11 Августа 2014, 06:29 | Сообщение # 1 |  
 
постоянный участник 
Сейчас нет на сайте 
 
 | Код         public bool move(int newx, int newy,int width2, int height2)            {                Rectangle entity;                entity = new Rectangle(newy * 32, newy * 32, this.height, this.width);                foreach (Block n in Game1.Block)                {                    Rectangle block;                    block = new Rectangle(n.x * 32, n.y * 32, 32, 32);                    if (block.Intersects(entity))                    {                        return false;                    }                    else if (entity.Intersects(block))                    {                        return false;                    } 
                }                this.x = newx;                this.y = newy;                return true;            }     Вот код перемещение, ну он гад блоки не видит, в чём может быть причина.
 
 Сообщение отредактировал Labirintik - Понедельник, 11 Августа 2014, 06:30  |  
| 
 | 
 |    | 
| ant0N | Дата: Понедельник, 11 Августа 2014, 07:56 | Сообщение # 2 |  
 
постоянный участник 
Сейчас нет на сайте 
 
 | не знаокм с С#, но попробую рассуждать логически 
   Код               foreach (Block n in Game1.Block)                    {                        Rectangle block;                        block = new Rectangle(n.x * 32, n.y * 32, 32, 32);     тут ты перебираешь все блоки и каждый раз переназначаешь переменную block. Т.е block по факту у тебя только один - самый последний   получается, если последний блок не пересекается с entity, то функция возвратит true. 
   Я бы сделал массив block 
   Могу, конечно, глубоко ошибаться.
  Blender 3D, Godot Engine, LUA
 
 Сообщение отредактировал ant0N - Понедельник, 11 Августа 2014, 08:00  |  
| 
 | 
 |    | 
| ZnOFF | Дата: Понедельник, 11 Августа 2014, 08:57 | Сообщение # 3 |  
 
частый гость 
Сейчас нет на сайте 
 
 | ant0N, foreach перебирает экземпляры в коллекции. Каждую итерацию n - это следующий элемент. Здесь всё верно. 
   Цитата Labirintik (  )  entity = new Rectangle(newy * 32, newy * 32, this.height, this.width);    
   А где же newX? два раза использован newY...   Не перепутаны случайно Width и Height местами? Кроме того, в метод передаются width2 и height2, которые у Вас не используются, хотя по смыслу фрагмента кода вроде как должны(возможно Вы путаете что такое this - это текщий экземпляр класса, а не контекст метода).   Ещё конструкция if у вас странная. Вроде как одной проверки на пересечение достаточно. Если A пересекается с B, то и B пересекается с A.
 
 Сообщение отредактировал ZnOFF - Понедельник, 11 Августа 2014, 09:01  |  
| 
 | 
 |    | 
| Labirintik | Дата: Понедельник, 11 Августа 2014, 14:08 | Сообщение # 4 |  
 
постоянный участник 
Сейчас нет на сайте 
 
 | Цитата ZnOFF (  )     А где же newX? два раза использован newY...   Не перепутаны случайно Width и Height местами? Кроме того, в метод передаются width2 и height2, которые у Вас не используются, хотя по смыслу фрагмента кода вроде как должны(возможно Вы путаете что такое this - это текщий экземпляр класса, а не контекст метода).   Ещё конструкция if у вас странная. Вроде как одной проверки на пересечение достаточно. Если A пересекается с B, то и B пересекается с A. 
        Я вторую уже сделал, когда не увидел рабочий столкновение, спасибо за помощь, а width2 и height2 остались от старого кода
 |  
| 
 | 
 |    |