Пятница, 22 Ноября 2024, 00:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Урон
VagaitsevДата: Суббота, 09 Августа 2014, 16:17 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет! Помогите дополнить код на c#
Необходимо когда зомби ко мне подходит он убивал меня сразу
И нужна дистанция при которой объект видит меня

вот код

Код
using UnityEngine;
using System.Collections;

public class Enemy: MonoBehaviour {

     public Transform player;
     public float move_speed;
     public float rotation_speed;
     public Transform enemy;
     void Update()
     {
         var look_dir = player.position - enemy.position;
         //look_dir.y = 0;
         enemy.rotation = Quaternion.Slerp(enemy.rotation,Quaternion.LookRotation(look_dir),rotation_speed*Time.deltaTime);
         enemy.position += enemy.forward * move_speed * Time.deltaTime;
     }
}
WookieДата: Суббота, 09 Августа 2014, 16:39 | Сообщение # 2
Decembear
Сейчас нет на сайте
http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerEnter.html

allodsДата: Суббота, 09 Августа 2014, 17:02 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
рейкаст и триггер тебе в помощь юный падаван
JonLivingstonДата: Суббота, 09 Августа 2014, 18:53 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Код

//Смерть
if(Vector3.Distance(player.position, enemy.position) < minDistance)
               player.Death();

//Видимость
if(Vector3.Distance(player.position, enemy.position) < lookDistance)
               player.isVisible = true;
else  
               player.isVisible = false;


И, соответственно, подставляй переменные. А вообще, в целом, за расстояние отвечает Vector3.Distance, с ним и играй.


"Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
Наша первая игра Dark Forest
Let's play на Dark Forest
MANMANAДата: Суббота, 09 Августа 2014, 20:00 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
И консоль ему скажет, что у player нет компонента Death smile
Функцию Смерть ему в помощь?:)


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
JonLivingstonДата: Суббота, 09 Августа 2014, 21:54 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Цитата MANMANA ()
Функцию Смерть ему в помощь?:)

Так же, как и isVisible. Я думаю с этим пусть как-нибудь сам, ибо вопрос в другом состоял =)


"Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
Наша первая игра Dark Forest
Let's play на Dark Forest


Сообщение отредактировал JonLivingston - Суббота, 09 Августа 2014, 21:57
VagaitsevДата: Воскресенье, 10 Августа 2014, 07:14 | Сообщение # 7
был не раз
Сейчас нет на сайте
Переменная видимости?
Код
    public float lookDistance;


Выдает ошибку

Код
Assets/������� � �����/Enemy.cs(20,23): error CS1061: Type `UnityEngine.Transform' does not contain a definition for `isVisible' and no extension method `isVisible' of type `UnityEngine.Transform' could be found (are you missing a using directive or an assembly reference?)
WookieДата: Воскресенье, 10 Августа 2014, 07:16 | Сообщение # 8
Decembear
Сейчас нет на сайте
Vagaitsev,
Цитата JonLivingston ()
Так же, как и isVisible. Я думаю с этим пусть как-нибудь сам, ибо вопрос в другом состоял =)


VagaitsevДата: Воскресенье, 10 Августа 2014, 08:08 | Сообщение # 9
был не раз
Сейчас нет на сайте
Wookie, Я просто не догоняю что да как) Так куда вставлять и дописывать?
JonLivingstonДата: Воскресенье, 10 Августа 2014, 11:31 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Vagaitsev, переменные
Код
minDistance //Дистанция смерти
lookDistance //Дистанция видимости
isVisible //Видимость игрока
А так же метод
Код

Death(); //Смерть

вы вводите сами, основываясь на предыдущем коде и необходимых данных.

Ок, судя по таким вопроса, наверное стоит пояснить еще кое-что. Предыдущий код я писал, как пример, в надежде на то, что из него будет виден принцип действия инструмента Vector3.Distance(). Точно так, как там, писать не стоит. В частности, код
Код
//Видимость    
if(Vector3.Distance(player.position, enemy.position) < lookDistance)    
                  player.isVisible = true;    
else     
                  player.isVisible = false;    

Лучше заменить на
Код
if(Vector3.Distance(player.position, enemy.position) < lookDistance)    
                  isLook = true;    
else     
                  isLook = false;    

Тогда, при наличии двух и более врагов, даже если вы вышли из зоны видимости одного, другой может продолжать вас видеть. Другими словами, лучше проверять не видимость игрока, а поле зрения каждого моба. Конечно, я надеялся, что это и так понятно, но похоже, пояснить все-таки было не лишним.

Все, что вам осталось, вбить необходимые значения в переменные (все переменные создаются в классе Enemy), описанные выше (player.isVisible заменив на isLook), а так же создать в классе Player публичный метод Death(), в котором прописать, что случается при смерти.


"Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах
Наша первая игра Dark Forest
Let's play на Dark Forest


Сообщение отредактировал JonLivingston - Воскресенье, 10 Августа 2014, 11:34
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг