Среда, 06 Ноября 2024, 03:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Мои вопросики по унети
СценаристкаДата: Воскресенье, 05 Декабря 2010, 18:33 | Сообщение # 1
был не раз
Сейчас нет на сайте
1) Как придать телу импульс?
2) Как сделать проверку соприкосновения двух объектов.
Всё это в С шарпе должно быть. Подскажите пожалуйста.


Хороший день - когда проводишь его с милым.
П.С. То есть с компьютером и и интернетом.
LorderonДата: Воскресенье, 05 Декабря 2010, 18:36 | Сообщение # 2
старожил
Сейчас нет на сайте
Code
В.: Как придать телу импульс?
О.: Rigidbody.AddForce с параметром ForceMode.Impulse.

Вырезка из FAQ.
-----------------
Не "унети", а "унити", ну или "юнити".
-----------------
Ты хоть знаешь, что такое "импульс тела"? 0_х
SlavyanOOsДата: Понедельник, 06 Декабря 2010, 10:46 | Сообщение # 3
Problems, developer?
Сейчас нет на сайте
Quote (Сценаристка)
2) Как сделать проверку соприкосновения двух объектов.

Если один объект Character Collider, то
Code

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
public float pushPower = 2.0F;
void OnControllerColliderHit(ControllerColliderHit hit) {
Rigidbody body = hit.collider.attachedRigidbody;
if (body == null || body.isKinematic)
return;

if (hit.moveDirection.y < -0.3F)
return;

Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
body.velocity = pushDir * pushPower;
}
}
ЛевшаДата: Понедельник, 06 Декабря 2010, 14:54 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
А к чему такие сложности? smile
Есть готовая функция:

Code
function ApplyPickup (player : FPSPlayer) {
}

Все события, которые будут прописаны внутри скобок, произойдут при соприкосновении коллайдера с ГГ.
Впрочем все зависит от целей. smile


X.cor.R (Prologue)

Сообщение отредактировал Левша - Понедельник, 06 Декабря 2010, 14:55
СценаристкаДата: Среда, 08 Декабря 2010, 22:36 | Сообщение # 5
был не раз
Сейчас нет на сайте
Всем спасибо, особенно Левше. Последний вопрос:
Quote (Левша)
function ApplyPickup (player : FPSPlayer) {
}

Это С шарп? И как его применить?

Добавлено (08.12.2010, 22:01)
---------------------------------------------
Объект "Door" при соприкосновении с "Propeller" дожлен проигрывать анимацию "Open" и переменная "wer" +=2.

Добавлено (08.12.2010, 22:36)
---------------------------------------------

Quote (Сценаристка)
Объект "Door" при соприкосновении с "Propeller" дожлен проигрывать анимацию "Open" и переменная "wer" +=2.

Помогите поскорее! Ктонибудь!


Хороший день - когда проводишь его с милым.
П.С. То есть с компьютером и и интернетом.
ЛевшаДата: Четверг, 09 Декабря 2010, 05:26 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Quote (Сценаристка)
Это С шарп? И как его применить?

Все равно, функция она везде функция.
Но я лично применял в Js, в проекте оружие подбирал с пола этой функцией, щас скрипт поищу для примера выложу.

Quote (Сценаристка)
Объект "Door" при соприкосновении с "Propeller" дожлен проигрывать анимацию "Open" и переменная "wer" +=2.

С переменной "wer" +=2 не понял... а с дверью это будет выглядеть так:

Code

var animOpen : AnimationClip;      

function ApplyPickup (player : FPSPlayer) {      
         animation.wrapMode = WrapMode.Default;
      animation.clip = animOpen;
      animation.Play();
}

Но! эта функция для столкновения с ГГ, не знаю будет ли она работать с простыми обьектами.
Видимо вместо аргумента player : FPSPlayer надо другой привести.

Добавлено (09.12.2010, 05:26)
---------------------------------------------
Вот покопался у себя и нашел еще одну функцию столкновений, как раз для обьектов.
Чтоб не быть многословным, сразу приведу работающий скрипт, там все наглядно:

Code

static var lestnica =0;
private var weap = 0;

function OnTriggerEnter (other : Collider) {
        FPSWalker.lestnica = 1;
     weap = Weapons.weap;
     Weapons.weap = 10;
     yield WaitForSeconds(0.1);
     lestnica =1;
}

function OnTriggerExit (other : Collider) {
        yield WaitForSeconds(0.1);
     FPSWalker.lestnica = 2;
     Weapons.weap = weap;
     yield WaitForSeconds(0.5);
     lestnica =1;
}

Скрипт применялся для определения столкновения с лестницей, там наглядно видно что функция - function OnTriggerEnter (other : Collider)
Это встроенная функция и не вызываеться из скрипта, просто происходит событие (столкновение) и функция запускаеться сама.
Второе событие - это прекращение столкновения - function OnTriggerExit (other : Collider).

PS. Я пишу на Js, с C# помочь не смогу... но знаю одно, что функции там работают одинаково, может быть только разница в синтаксисе.
А вообще все это есть в мануале... Scripting Overview


X.cor.R (Prologue)

Сообщение отредактировал Левша - Четверг, 09 Декабря 2010, 05:31
СценаристкаДата: Четверг, 09 Декабря 2010, 15:49 | Сообщение # 7
был не раз
Сейчас нет на сайте
Quote (Левша)
function ApplyPickup (player : FPSPlayer) {      
         animation.wrapMode = WrapMode.Default;
      animation.clip = animOpen;
      animation.Play();
}

то есть
Quote (Левша)
function
Это вызов функции (ну это понятно)

Code
ApplyPickup
- это названия функции которая проверяет колизию (это тоже понятно)
Code
(player : FPSPlayer)
- это параметры вызова колизии (тут не так понятно уже)
Quote (Левша)
function ApplyPickup (player: FPSPlayer)

А теперь вопрос! То что красное это объект который должен соприкоснуться? А синие - то С ЧЕМ должно соприкаснуться? Правильно? Объясни мне, Левша, каждое слово этого кода:"function ApplyPickup (player : FPSPlayer)". Где писать названия тех двух объектов, при колизии которых должно происходить действие. И куда потом этот скрипт вставлять?


Хороший день - когда проводишь его с милым.
П.С. То есть с компьютером и и интернетом.
ЛевшаДата: Четверг, 09 Декабря 2010, 18:02 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Quote (Сценаристка)
Это вызов функции (ну это понятно)

Это не вызов, это тело функции, вызов было бы - OnTriggerEnter ();

Quote (Сценаристка)
То что красное это объект который должен соприкоснуться? А синие - то С ЧЕМ должно соприкаснуться?

Нет не совсем так. Этот аргумент полностью описывает ГГ. И красным и синим. Здесь если не ошибаюсь - player - это тег, который назначен
префабу FPSPlayer.

Quote (Сценаристка)
Где писать названия тех двух объектов, при колизии которых должно происходить действие. И куда потом этот скрипт вставлять?

Как я и писал выше эта функция для ГГ.
Вам же подойдет второй вариант:

function OnTriggerEnter (other : Collider)

Скрипт вешать на один из обьектов, при касании любого другого коллайдера, сработает функция (потому что аргумент - other - другой).
Да! самое главное, на коллайдере обьекта должна стоять галочка - is trigger, иначе не сработает.


X.cor.R (Prologue)

Сообщение отредактировал Левша - Пятница, 10 Декабря 2010, 02:44
  • Страница 1 из 1
  • 1
Поиск:

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