Проблема со стрельбой C#

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: Проблема со стрельбой C#

Сообщение ollkill 08 фев 2013, 16:18

AndreyMust19 писал(а):Уберите галочку Gravity в префабе пули. Уменьшите массу пули или увеличьте силу. Удаляйте выпущенные пули после столкновения с объектом (OnCollisionEnter) и по истечении определенного времени (н-р, 5 секунд).


по ходу не понял сути. Все пули летят вдоль одного вектора!
Масса нужна, скрипт просчета столкновений отключил специально, для наглядности.

Мне нужно чтоб получился FPS(First Person Shuter)- стрелять в ту сторону в которую смотрю, вот каким образом это реализовать?(((((((((((((
ollkill
UNIт
 
Сообщения: 50
Зарегистрирован: 07 фев 2013, 10:42
Откуда: Москва
  • Сайт
  • ICQ

Re: Проблема со стрельбой C#

Сообщение Medveckij 08 фев 2013, 16:33

ollkill писал(а):
AndreyMust19 писал(а):Уберите галочку Gravity в префабе пули. Уменьшите массу пули или увеличьте силу. Удаляйте выпущенные пули после столкновения с объектом (OnCollisionEnter) и по истечении определенного времени (н-р, 5 секунд).


по ходу не понял сути. Все пули летят вдоль одного вектора!
Масса нужна, скрипт просчета столкновений отключил специально, для наглядности.

Мне нужно чтоб получился FPS(First Person Shuter)- стрелять в ту сторону в которую смотрю, вот каким образом это реализовать?(((((((((((((



Сам Dexter объясняет как это сделать.

http://www.youtube.com/watch?v=3L8eaoyZ0Go

Скрытый текст:
Изображение
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Проблема со стрельбой C#

Сообщение ollkill 08 фев 2013, 17:00

Сам Dexter объясняет как это сделать.

http://www.youtube.com/watch?v=3L8eaoyZ0Go


Все бы ок, но вот в английском крайне хреново - 1, и еще не до конца сообразил как переводить с явы на шарп.
ollkill
UNIт
 
Сообщения: 50
Зарегистрирован: 07 фев 2013, 10:42
Откуда: Москва
  • Сайт
  • ICQ

Re: Проблема со стрельбой C#

Сообщение AndreyMust19 08 фев 2013, 17:31

Вот вчера писал скрипт оружия:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Firearm : Item /* MonoBehaviour */{

        public GameObject bullet;
        public Vector3 mouthOffset;
        public float pulse = 50.0f;
       
        private GameObject respawnObj;
       
        public override bool Use(AvatarInfo who) { //public bool Use()
                respawnObj = (GameObject)Object.Instantiate(bullet, transform.position+mouthOffset, Quaternion.identity);
                respawnObj.rigidbody.AddForce(pulse*transform.forward);
                return true;
        }
}


В комментах написал на что вам надо заменить чтобы у вас заработало. В mouthOffset укажите локальное смещение точки, откуда будет вылетать пуля. А этот скрипт повесьте на префаб пули (bullet в пред. скрипте):
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;


[RequireComponent(typeof(Collider))]
[RequireComponent(typeof(Rigidbody))]
public class Bullet : MonoBehaviour {

        private const float lifePeriod = 5.0f;
        private float timer = lifePeriod;
       
        void FixedUpdate() {
                if (timer > 0.0f) timer -= Time.fixedDeltaTime;
                else Slay();
        }
       
       
        GameObject go;
       
        void OnCollisionEnter(Collision other) {
                go = other.gameObject;
                // в любом случае - играем звук, в зависимости от физ. материала
                Hit(go, go.transform.root.gameObject);
        }
       
        private void Hit(GameObject part, GameObject root) {
                // если попали в Player - сливаем ему здоровье, спецэффект крови
               
                // если в предмет - убавляем его прочность
               
                // если любое другое (стена, пол) - рисуем декаль и спец-эффект дырки
               
                Slay();
        }
       
        // "уничтожаем" пулю, на самом деле просто отключаем ее
        private void Slay() {
                enabled = false;
                gameObject.active = false;
                GameObject.Destroy(gameObject, 10.0f);
        }
}

На пули, разумеется, должен быть какой-нибудь коллайдер и компонент Rigidbody.

А менять направление камеры и управлять перемещением по уровню должен другой скрипт.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14