|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
dajver1 : 42 Новичок
|
Янв 12, 2012 21:45 |
|
|
| Сопсно вопрос вот в чем, пишу игру под андроид, нужно задать направление полета пули. Когда перехватываю координату касания я должен передать направление полета, а я передаю саму координату где коснулись палцем и получается что пуля не летит туда, а вылетает оттуда, что посоветуете? Как решить эту делему два дня пытаюсь сделать, и никак не могу додуматься как. |
|
|
|
 |
Xcam : 155 Новичок
|
Янв 13, 2012 10:22 |
|
|
| Посоветую выложить кусок кода и сказать в какой строке проблема. |
|
|
|
 |
dajver1 : 42 Новичок
|
Янв 13, 2012 13:44 |
|
|
| Xcam писал(а): |
| Посоветую выложить кусок кода и сказать в какой строке проблема. |
Не могу выложить кусок кода, могу но это займет три монитора, там три класса взаимодействующих вместе. Мне всего лишь нужно понять как задать направление полета пуле.
Есть метод onTouch(), он вызывает событие нажатия на экран, в виндовс это можно назвать онКлик событие. И когда я передаю координаты Х, У я передаю позицию, а нужно направление к этой позиции. Как это сделать? |
|
|
|
 |
Xcam : 155 Новичок
|
Янв 13, 2012 13:53 |
|
|
Для задания направления вам необходимо знать 2 точки. Т.е. первым нажатием на экран пользователь задает положение пули, вторым направление. Дальше уже смотрите по логике вашей программы. Вы можете хранить либо шаг по оси X и шаг по оси Y в единицу времени, либо хранить значение угла между направлением вектора движения и осью X например.
А вообще посмотрите описание доступных эвентов в спецификации андроида. Скорее всего, там есть реакция на перемещение пальца по экрану. |
|
|
|
 |
dajver1 : 42 Новичок
|
Янв 13, 2012 13:55 |
|
|
| Xcam писал(а): |
| Для задания направления вам необходимо знать 2 точки. Т.е. первым нажатием на экран пользователь задает положение пули, вторым направление. Дальше уже смотрите по логике вашей программы. Вы можете хранить либо шаг по оси X и шаг по оси Y в единицу времени, либо хранить значение угла между направлением вектора движения и осью X например. |
Спасибо за ответ!
А можно это привести не большим участком кода? Так я понял, но с трудом. |
|
|
|
 |
Xcam : 155 Новичок
|
Янв 13, 2012 14:06 |
|
|
Например как-то так.
| Код: |
import java.awt.Point;
public class Bullet
{
private int x;
private int y;
private double angle;
private int speed;
public Bullet(Point pointStart, Point pointTo, int speed)
{
x = pointStart.x;
y = pointStart.y;
angle = Math.atan((y - pointTo.y) / (x - pointTo.x));
this.speed = speed;
}
public void step()
{
x = (int)(x + speed * Math.cos(angle));
y = (int)(y + speed * Math.sin(angle));
}
} |
|
|
|
|
 |
dajver1 : 42 Новичок
|
Янв 13, 2012 14:07 |
|
|
| Xcam писал(а): |
Например как-то так.
| Код: |
import java.awt.Point;
public class Bullet
{
private int x;
private int y;
private double angle;
private int speed;
public Bullet(Point pointStart, Point pointTo, int speed)
{
x = pointStart.x;
y = pointStart.y;
angle = Math.atan((y - pointTo.y) / (x - pointTo.x));
this.speed = speed;
}
public void step()
{
x = (int)(x + speed * Math.cos(angle));
y = (int)(y + speed * Math.sin(angle));
}
} |
|
Спасибо огромное за помощь!! Буду разбираться! |
|
|
|
 |
dajver1 : 42 Новичок
|
Янв 15, 2012 21:21 |
|
|
| Что то я бьюсь в конвульсиях бьюсь и ничего не получается, получается только (видео) вот такое, дальше никак не получается дойти. код немного модифицировал но суть не поменялась. Он почти один в один как код выше. Что-то там нужно рассчитать что бы летело в любую точку, а что не знаю... Помогите пожалуйста. |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Java 2D и Java 3D |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|