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
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; } }
Удачи!
Моя игра - 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; } }
Удачи! Автор - 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