3.03.2014 / 09:05 | |
Ilya_dio Пользователь Сейчас: Offline
Регистрация: 04.04.2013
| А ты поверял спрайт и замощенный слой на столкновения? Что-то я попробовал collidesWith(LayerSprite) и ноль реакции true не возвращается И как-то странно проверять карту на столкновения со спрайтом. Как-то задом наперед Не? |
3.03.2014 / 09:14 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| Ilya_dio, у меня все нормально детектировалось, спасибо за совет, исправлю. Покажи класс, в котором ты проверял столкновение.
Изменено samodelkin (3.03 / 09:18) (всего 2 раза) |
3.03.2014 / 10:31 | |
Ilya_dio Пользователь Сейчас: Offline
Регистрация: 04.04.2013
| samodelkin, Я распаковал твой SampleASGL с первой страницы себе в проэкты и добавил переменные для движения спрайта и карты. Когда спрайт наедет на карту - карта тоже должна ехать влево, но не едет И метод setVisible(true/false) тоже кстати не фурычит( У меня android 4.1 если что
Прикрепленные файлы: GameView.java (0.94 кб.) Скачано 802 раза |
3.03.2014 / 10:35 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| Ilya_dio, неверно делаешь, там не нужны никакие лишние переменные, перемещай методом move(-1,0); -перемещение влево У тебя и не будет ничего работать, так как действия происходят в методе onDraw, который отвечает за прорисовку, создай отдельный поток и в нем делай, сейчас напишу как надо сделать.
|
3.03.2014 / 10:39 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| package com.example.sampleasgl;
import samodelkin.androidsimplestgamelibrary.LayerSprite; import samodelkin.androidsimplestgamelibrary.LayerTiles; import android.content.Context; import android.graphics.Canvas; import android.view.View; import android.graphics.*;
public class GameView extends View implements Runnable{
private LayerSprite sprite; private LayerTiles map; private int[] indexMap={ 1,1,1, 1,0,1, 1,1,1 }; public GameView(Context context) { super(context); sprite=new LayerSprite(R.drawable.ic_launcher,this.getResources()); sprite.setPosition(100,50); map=new LayerTiles(getResources(),new int[]{R.drawable.ic_launcher},indexMap, 3, 3); new Thread(this).start(); } public void onDraw(Canvas c){ super.onDraw(c); map.paint(c); sprite.paint(c); invalidate(); }
public void run(){ while(true){ sprite.move(-1,0); if (map.collidesWith(sprite)) map.move(-1,0); try{ Thread.sleep(100); }catch(Exception e){} } }
}
|
3.03.2014 / 11:23 | |
Ilya_dio Пользователь Сейчас: Offline
Регистрация: 04.04.2013
| samodelkin, Не фурычит и это дело. А команда move двигает спрайт хоть в run(), хоть в onDraw() - он ведь тоже поток. На него так же можно паузу перед invalidate() поставить. Я попробовал то что ты написал - тайлы стоят на месте все равно и даже просто в run() команда move не двигает карту, хотя спрайт движется В чем проблема? |
3.03.2014 / 11:25 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| Ilya_dio, скинь проект.
|
3.03.2014 / 11:36 | |
Ilya_dio Пользователь Сейчас: Offline
Регистрация: 04.04.2013
| samodelkin, Вот он) Кстати спрайты нормально проверяются на столкновения... А вот с тайлами фигня какая-то
Прикрепленные файлы: SampleASGL.zip (135.75 кб.) Скачано 22 раза |
3.03.2014 / 11:39 | |
samodelkin Пользователь Сейчас: Offline
Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
| Ilya_dio, после обеда попробую разобраться.
|
3.03.2014 / 11:43 | |
Ilya_dio Пользователь Сейчас: Offline
Регистрация: 04.04.2013
| samodelkin, Ок, давай разберись А то у меня игра встала из-за этого Я же подумываю как слепить игровое пространство не из тайлов |