Damage при падении с высоты - Форум Игроделов
Вс, 09 Фев 2025, 19:07 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Damage при падении с высоты
GoodgeniusДата: Вс, 02 Июн 2013, 16:02 | Сообщение # 1
 
Сообщений: 86
Награды: 0
Репутация: 6
Статус: Offline
Привет всем!Давно уже столкнулся с проблемой что при падении с высоты у игрока не отнимается здоровье...
Пожалуйста помогите сделать,дайте хоть пару строк,пожалуйста помогите!
 
СообщениеПривет всем!Давно уже столкнулся с проблемой что при падении с высоты у игрока не отнимается здоровье...
Пожалуйста помогите сделать,дайте хоть пару строк,пожалуйста помогите!

Автор - Goodgenius
Дата добавления - 02 Июн 2013 в 16:02
игнатДата: Вс, 02 Июн 2013, 16:37 | Сообщение # 2
 
Сообщений: 706
Награды: 0
Репутация: 107
Статус: Offline
http://gamecreatingcommunity.ru/forum/59-5443-1 там тыкаете скриптинг и всё найдётся.


Правила форума · участник GCC
 
Сообщениеhttp://gamecreatingcommunity.ru/forum/59-5443-1 там тыкаете скриптинг и всё найдётся.

Автор - игнат
Дата добавления - 02 Июн 2013 в 16:37
HunjethДата: Пн, 03 Июн 2013, 07:37 | Сообщение # 3
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
найди переменную в CharacterMotor "grounded"
напиши гдето :
Код
var hitPoints : float = 300;
private var ytemp : float;
function Start() {
      ytemp = transform.position.y;
}

значит после grounded пиши

Код
var failDistance = ytemp - transform.position.y;
if (failDistance > 1)
if (hitPoints - failDistance < 0)
        hitPoints = 0;
        else
        hitPoints -= failDistance;
ytemp = transform.position.y;


Сообщение отредактировал Hunjeth - Пн, 03 Июн 2013, 14:43
 
Сообщениенайди переменную в CharacterMotor "grounded"
напиши гдето :
Код
var hitPoints : float = 300;
private var ytemp : float;
function Start() {
      ytemp = transform.position.y;
}

значит после grounded пиши

Код
var failDistance = ytemp - transform.position.y;
if (failDistance > 1)
if (hitPoints - failDistance < 0)
        hitPoints = 0;
        else
        hitPoints -= failDistance;
ytemp = transform.position.y;

Автор - Hunjeth
Дата добавления - 03 Июн 2013 в 07:37
GoodgeniusДата: Пн, 03 Июн 2013, 12:36 | Сообщение # 4
 
Сообщений: 86
Награды: 0
Репутация: 6
Статус: Offline
Спасибо,сейчас же попробую!

Добавлено (03 Июн 2013, 12:36)
---------------------------------------------
Что то я не вижу разницы когда падаю с большой высоты...Кинь пожалуйста этот скрипт и скрипт здоровья,а то вроде все нормально вставил в character motor но не чего не происходит.

 
СообщениеСпасибо,сейчас же попробую!

Добавлено (03 Июн 2013, 12:36)
---------------------------------------------
Что то я не вижу разницы когда падаю с большой высоты...Кинь пожалуйста этот скрипт и скрипт здоровья,а то вроде все нормально вставил в character motor но не чего не происходит.


Автор - Goodgenius
Дата добавления - 03 Июн 2013 в 12:36
ЛевшаДата: Пн, 03 Июн 2013, 12:50 | Сообщение # 5
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата (Goodgenius)
Что то я не вижу разницы когда падаю с большой высоты

Сделай ускорение падения и в момент касания земли урон умножай на скорость.


X.cor.R (Prologue)
 
Сообщение
Цитата (Goodgenius)
Что то я не вижу разницы когда падаю с большой высоты

Сделай ускорение падения и в момент касания земли урон умножай на скорость.

Автор - Левша
Дата добавления - 03 Июн 2013 в 12:50
HunjethДата: Пн, 03 Июн 2013, 14:08 | Сообщение # 6
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
по стандарту после
// We were not grounded but just landed on something
else if (!grounded && IsGroundedTest()) {
я поправил код


Сообщение отредактировал Hunjeth - Пн, 03 Июн 2013, 14:38
 
Сообщениепо стандарту после
// We were not grounded but just landed on something
else if (!grounded && IsGroundedTest()) {
я поправил код

Автор - Hunjeth
Дата добавления - 03 Июн 2013 в 14:08
AIDENДата: Пт, 21 Июн 2013, 19:25 | Сообщение # 7
Нет аватара
 
Сообщений: 59
Награды: 0
Репутация: 56
Статус: Offline
Вот скрипт. Только этот скрипт на C#. Просто перетащи скрипт на своего игрока.
Скрипт C# - PlayerFallDamage :

Код

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class PlayerFallDamage : MonoBehaviour {

RaycastHit uHit;
CharacterController uCharControler;
public float uHealth = 100.0f;
public float fallDamageCoef = 1.0f;
float lastVelocity = 0.0f;
float velocityLimit = -15.0f;
private bool uGUIEnable = false;

void fDEBUG (){
GUI.Label (new Rect (1, 1, 100, 100), "Health: " + uHealth);
}

void fGroundet () { //Функция расчета урона от падения
if (uCharControler.isGrounded) {
if (lastVelocity < velocityLimit) {
float damage = -lastVelocity * fallDamageCoef;
Damage(damage);
lastVelocity = 0.0f;
};
} else
lastVelocity = uCharControler.velocity.y;
}
float lastShot=0;
int i = 1;

void Damage(float damage) {
uHealth -= damage;
}

Vector2 VC = Vector2.zero;

void DrawGUI() {
GUI.EndScrollView();
}

void OnGUI () {
#region DrawLabel
Ray uCastRay = new Ray (Camera.mainCamera.transform.TransformPoint (0, 0, 0.5f), Camera.mainCamera.transform.TransformDirection (new Vector3 (0, 0, 5)));
#endregion DrawLabel

fDEBUG ();
if(uGUIEnable == true)DrawGUI();
}

void Start () {
uCharControler = (CharacterController)GetComponent ("CharacterController");
}

void Update () {
fGroundet ();
}
}


Моя игра - Collect Fruit
 
СообщениеВот скрипт. Только этот скрипт на C#. Просто перетащи скрипт на своего игрока.
Скрипт C# - PlayerFallDamage :

Код

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class PlayerFallDamage : MonoBehaviour {

RaycastHit uHit;
CharacterController uCharControler;
public float uHealth = 100.0f;
public float fallDamageCoef = 1.0f;
float lastVelocity = 0.0f;
float velocityLimit = -15.0f;
private bool uGUIEnable = false;

void fDEBUG (){
GUI.Label (new Rect (1, 1, 100, 100), "Health: " + uHealth);
}

void fGroundet () { //Функция расчета урона от падения
if (uCharControler.isGrounded) {
if (lastVelocity < velocityLimit) {
float damage = -lastVelocity * fallDamageCoef;
Damage(damage);
lastVelocity = 0.0f;
};
} else
lastVelocity = uCharControler.velocity.y;
}
float lastShot=0;
int i = 1;

void Damage(float damage) {
uHealth -= damage;
}

Vector2 VC = Vector2.zero;

void DrawGUI() {
GUI.EndScrollView();
}

void OnGUI () {
#region DrawLabel
Ray uCastRay = new Ray (Camera.mainCamera.transform.TransformPoint (0, 0, 0.5f), Camera.mainCamera.transform.TransformDirection (new Vector3 (0, 0, 5)));
#endregion DrawLabel

fDEBUG ();
if(uGUIEnable == true)DrawGUI();
}

void Start () {
uCharControler = (CharacterController)GetComponent ("CharacterController");
}

void Update () {
fGroundet ();
}
}

Автор - AIDEN
Дата добавления - 21 Июн 2013 в 19:25
GoodgeniusДата: Сб, 29 Июн 2013, 08:01 | Сообщение # 8
 
Сообщений: 86
Награды: 0
Репутация: 6
Статус: Offline
Спасибо!
Вот только как сделать остановку игры при потери все жизней?
Ну тоесть если я упал и у меня отняло все 100 жизней то игра останавливается,а не продолжается отсчет жизней.
 
СообщениеСпасибо!
Вот только как сделать остановку игры при потери все жизней?
Ну тоесть если я упал и у меня отняло все 100 жизней то игра останавливается,а не продолжается отсчет жизней.

Автор - Goodgenius
Дата добавления - 29 Июн 2013 в 08:01
AIDENДата: Сб, 29 Июн 2013, 16:40 | Сообщение # 9
Нет аватара
 
Сообщений: 59
Награды: 0
Репутация: 56
Статус: Offline
Попробуй так :
Код

using UnityEngine;   
   using System.Collections;   
   using System.Collections.Generic;   
   public class PlayerFallDamage : MonoBehaviour {   

   RaycastHit uHit;   
   CharacterController uCharControler;   
   public float uHealth = 100.0f; //Указываешь количество жизней
   public float fallDamageCoef = 1.0f; //Коэффициент  урона от падения
   public MouseLook PlayerMouseLook;//Указываешь своего игрока, на котором висит скрипт MouseLook
   public AudioClip SoundDie;//Звук смерти игрока
   public GameObject ObjectDead;//Объект который будет активироваться после смерти(Типа какое-то меню, с выбором : Главное Меню, Рестарт миссии)
   public BlurEffect CamBlurEffect ;//Повесь скрипт BlurEffect на камеру игрока (Во время смерти, будет активироваться этот эффект)
   public MouseLook CamMouseLook;//Указываешь камеру игрока, на которой висит скрипт MouseLook
   float lastVelocity = 0.0f;   
   float velocityLimit = -15.0f;   
   private bool uGUIEnable = false;   

   void fDEBUG (){   
   GUI.Label (new Rect (1, 1, 100, 100), "Health: " + uHealth);   
   }   

   void fGroundet () { //Функция расчета урона от падения   
   if (uCharControler.isGrounded) {   
   if (lastVelocity < velocityLimit) {   
   float damage = -lastVelocity * fallDamageCoef;   
   Damage(damage);   
   lastVelocity = 0.0f;   
   };   
   } else   
   lastVelocity = uCharControler.velocity.y;   
   }   
   float lastShot=0;   
   int i = 1;   

   void Damage(float damage) {   
   uHealth -= damage;   
   if(uHealth < 0){
   Dead();
   }   
   }
   Vector2 VC = Vector2.zero;   

   void DrawGUI() {   
   GUI.EndScrollView();   
   }   

   void OnGUI () {   
   #region DrawLabel   
   Ray uCastRay = new Ray (Camera.mainCamera.transform.TransformPoint (0, 0, 0.5f), Camera.mainCamera.transform.TransformDirection (new Vector3 (0, 0, 5)));   
   #endregion DrawLabel   

   fDEBUG ();   
   if(uGUIEnable == true)DrawGUI();   
   }   

   void Start () {   
    PlayerMouseLook.enabled = true;
    Time.timeScale = 1;
   uCharControler = (CharacterController)GetComponent ("CharacterController");   
ObjectDead.active = false;
    CamBlurEffect.enabled = false;
    CamMouseLook.enabled = true;
   }   

   void Update () {   
   fGroundet ();   
   }   
     

   void Dead () {//Функция отвечающая за смерть игрока
   audio.clip = SoundDie;
    Time.timeScale = 0;
    audio.Play();
    ObjectDead.active = true;
    CamBlurEffect.enabled = true;
    PlayerMouseLook.enabled = false;
    CamMouseLook.enabled = false;
}
}

Удачи! smile


Моя игра - Collect Fruit

Сообщение отредактировал AIDEN - Сб, 29 Июн 2013, 16:58
 
СообщениеПопробуй так :
Код

using UnityEngine;   
   using System.Collections;   
   using System.Collections.Generic;   
   public class PlayerFallDamage : MonoBehaviour {   

   RaycastHit uHit;   
   CharacterController uCharControler;   
   public float uHealth = 100.0f; //Указываешь количество жизней
   public float fallDamageCoef = 1.0f; //Коэффициент  урона от падения
   public MouseLook PlayerMouseLook;//Указываешь своего игрока, на котором висит скрипт MouseLook
   public AudioClip SoundDie;//Звук смерти игрока
   public GameObject ObjectDead;//Объект который будет активироваться после смерти(Типа какое-то меню, с выбором : Главное Меню, Рестарт миссии)
   public BlurEffect CamBlurEffect ;//Повесь скрипт BlurEffect на камеру игрока (Во время смерти, будет активироваться этот эффект)
   public MouseLook CamMouseLook;//Указываешь камеру игрока, на которой висит скрипт MouseLook
   float lastVelocity = 0.0f;   
   float velocityLimit = -15.0f;   
   private bool uGUIEnable = false;   

   void fDEBUG (){   
   GUI.Label (new Rect (1, 1, 100, 100), "Health: " + uHealth);   
   }   

   void fGroundet () { //Функция расчета урона от падения   
   if (uCharControler.isGrounded) {   
   if (lastVelocity < velocityLimit) {   
   float damage = -lastVelocity * fallDamageCoef;   
   Damage(damage);   
   lastVelocity = 0.0f;   
   };   
   } else   
   lastVelocity = uCharControler.velocity.y;   
   }   
   float lastShot=0;   
   int i = 1;   

   void Damage(float damage) {   
   uHealth -= damage;   
   if(uHealth < 0){
   Dead();
   }   
   }
   Vector2 VC = Vector2.zero;   

   void DrawGUI() {   
   GUI.EndScrollView();   
   }   

   void OnGUI () {   
   #region DrawLabel   
   Ray uCastRay = new Ray (Camera.mainCamera.transform.TransformPoint (0, 0, 0.5f), Camera.mainCamera.transform.TransformDirection (new Vector3 (0, 0, 5)));   
   #endregion DrawLabel   

   fDEBUG ();   
   if(uGUIEnable == true)DrawGUI();   
   }   

   void Start () {   
    PlayerMouseLook.enabled = true;
    Time.timeScale = 1;
   uCharControler = (CharacterController)GetComponent ("CharacterController");   
ObjectDead.active = false;
    CamBlurEffect.enabled = false;
    CamMouseLook.enabled = true;
   }   

   void Update () {   
   fGroundet ();   
   }   
     

   void Dead () {//Функция отвечающая за смерть игрока
   audio.clip = SoundDie;
    Time.timeScale = 0;
    audio.Play();
    ObjectDead.active = true;
    CamBlurEffect.enabled = true;
    PlayerMouseLook.enabled = false;
    CamMouseLook.enabled = false;
}
}

Удачи! smile

Автор - AIDEN
Дата добавления - 29 Июн 2013 в 16:40
игнатДата: Сб, 29 Июн 2013, 17:37 | Сообщение # 10
 
Сообщений: 706
Награды: 0
Репутация: 107
Статус: Offline
AIDEN, не надо давать готовые скрипты, пусть человек сам пишет... (просто логику укажите, можно с функциями помочь, но не надо давать, а то даже не разберутся в нём)


Правила форума · участник GCC
 
СообщениеAIDEN, не надо давать готовые скрипты, пусть человек сам пишет... (просто логику укажите, можно с функциями помочь, но не надо давать, а то даже не разберутся в нём)

Автор - игнат
Дата добавления - 29 Июн 2013 в 17:37
CoMMoNДата: Чт, 12 Сен 2013, 17:13 | Сообщение # 11
Нет аватара
 
Сообщений: 11
Награды: 0
Репутация: 0
Статус: Offline
игнат, не все такие что поставили и е смотрят что и как там, например я новичок вообще нуб реальный и когда мне дают скрипт готовый или например код, то я обязательно стараюсь облапать его так будто я его сам написал понять что за что отвечает и т.п в C#, JS я тут так же нуб.
 
Сообщениеигнат, не все такие что поставили и е смотрят что и как там, например я новичок вообще нуб реальный и когда мне дают скрипт готовый или например код, то я обязательно стараюсь облапать его так будто я его сам написал понять что за что отвечает и т.п в C#, JS я тут так же нуб.

Автор - CoMMoN
Дата добавления - 12 Сен 2013 в 17:13
GoodgeniusДата: Пт, 13 Сен 2013, 08:42 | Сообщение # 12
 
Сообщений: 86
Награды: 0
Репутация: 6
Статус: Offline
CoMMoN, если ты будешь "Лапать" чужой код, то из этого нечего не выйдет, т.к. ты даже не знаешь элементарных команд, как ты собираешься вобще хоть что нибуть понять в коде? Учись сначала сам слеплять простые команды, а не лапать чужой скрипт не знав да же какая команда за что отвечает. И в названии темы я указал: помогите сделать, а не дайте готовый скрипт подстроенный под меня. Никто не знает что тебе именно нужно, и не будет выкладывать код который именно тебе нужен в твоей игре. Вот например: ты создаешь карту для своей игры, ты же не просишь у других что бы они тебе скинули готовую карту? Они ведь не знают какая тебе нужна и т.д. Просто потому что это куда легче сделать чем писать сложные системы для своих игр, а принцип тот же.
 
СообщениеCoMMoN, если ты будешь "Лапать" чужой код, то из этого нечего не выйдет, т.к. ты даже не знаешь элементарных команд, как ты собираешься вобще хоть что нибуть понять в коде? Учись сначала сам слеплять простые команды, а не лапать чужой скрипт не знав да же какая команда за что отвечает. И в названии темы я указал: помогите сделать, а не дайте готовый скрипт подстроенный под меня. Никто не знает что тебе именно нужно, и не будет выкладывать код который именно тебе нужен в твоей игре. Вот например: ты создаешь карту для своей игры, ты же не просишь у других что бы они тебе скинули готовую карту? Они ведь не знают какая тебе нужна и т.д. Просто потому что это куда легче сделать чем писать сложные системы для своих игр, а принцип тот же.

Автор - Goodgenius
Дата добавления - 13 Сен 2013 в 08:42
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2025