Пятница, 26 Апреля 2024, 16:55

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема с прыжком персонажа! (Помогите C#)
Проблема с прыжком персонажа!
dzrone3488Дата: Вторник, 12 Мая 2015, 19:06 | Сообщение # 1
участник
Сейчас нет на сайте
С не давних пор стала очень популярна игра Geometry Dash(Клон Impossible Game) и вот я решил сделать свою версию этой игры. Всё было уже запланировано, нарисованы текстуры, заготовлена музыка! И вот началась разработка и закончилась в этот же день. Я не знаю как сделать такой же прыжок как и в Geometry Dash. Дело в том, что кубик тупо прыгает по законам физики, то есть он может катиться, перекатываться как хочет, одним словом кубик слишком свободно двигается! Мои требования для объяснения слишком большие, по этому, чтобы легче было понять чего я добиваюсь можете зайти сюда и посмотреть как это должно выглядеть - http://impossiblegame.org/the-impossible-game/
Я делаю игру в 3D что и будет отличием от остальных клонов.
Пишу на C#
Буду на седьмом небе от счастья, если кто поможет в написании кода. ОЧЕНЬ ОЧЕНЬ Благодарен заранее
Вот мой не удачный код:
Код

using UnityEngine;
using System.Collections;

public class CubeController : MonoBehaviour {

     public float transformSpeed;
     public float jumpPower;

     public bool dead;

     public Vector3 startPosition;

     public KeyCode keyForJump;

     public RaycastHit hitData;

     

      

  void Start () {

         dead = false;
         startPosition = transform.position;

         if (transformSpeed == 0)
         {
             transformSpeed = 0.12f;
         }

         if (jumpPower == 0)
         {
             jumpPower = 365.0f;
         }

          

   
  }
   
   
  void Update () {

         if (dead)
         {
             transform.position = startPosition;
             dead = false;
         }

          
          
         gameObject.transform.Translate(0, 0, -transformSpeed,Space.World);

         /*if (Input.GetKey(keyForJump))
         {
             if (Physics.Raycast(transform.position, -Vector3.up, out hitData, 0.5f))
             {
                 rigidbody.constraints = RigidbodyConstraints.FreezeRotation;
                 rigidbody.AddForce(0, jumpPower, 0);  
                  
             }
             else
             {
                 rigidbody.constraints = RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
             }
         }
  */
  }

     void OnCollisionStay ()  
     {
         if (Input.GetKey(keyForJump))
         {
             rigidbody.constraints = RigidbodyConstraints.FreezeRotation;
             rigidbody.AddForce(0, jumpPower, 0);
         }
          

     }
     void OnCollisionExit()
     {
         rigidbody.constraints = RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
     }
}


Я делаю игры, а вы в них играете! :)
Моя группа по созданию игр - www.vk.com/dzrone

ЛевшаДата: Вторник, 12 Мая 2015, 20:10 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Отказатся от встроенной физики и писать свой эмулятор.

X.cor.R (Prologue)
MANMANAДата: Среда, 13 Мая 2015, 00:40 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
старое-новое воплощение механики flappy-birds, всяких раннеров и т.д. и использование психологии для насилования подсознания мозга человека. Кста, этот проект еще сделать социальным в виде размещения результатов за деньги в соц сетях и будет всем счастье.
Ну ладно, хватит ворчать...

rigidbody.AddForce(0, jumpPower, 0); в Update () - крайне плохо стиль.
физика в FixedUpdate - правильное решение поставленной

Далее, Можно ведь поиграться с материалами как "персонажа", так и элементов платформ и препятствий; массой "персонажа"; отключить гравитацию и создать свою гравитацию с куртизанками и бурой через rigidbody.AddForce, Rigidbody.velocity и т.д., например, по любой подходящей Вам формуле (в средах разработки 3d, да и на Unity и т.д. видел задание "физики" движению посредством нелинейных уравнений, причем даже онлайн проектик где-то видел).

Либо, как сказал, Левш@, писать свой эмулятор.

А можете написать на базе PhysX (благо он теперь открытый) свой физ. движок.

А можете плюнуть на физику и написать "псевдофизику" - что с какой скоростью должно двигаться и падать вниз, летать вверх через transform.position, transform.Translate

Еще можете посмотреть этот проект https://www.assetstore.unity3d.com/en/#!/content/1726, здесь персонаж скользит по ледяным платформам, перемещается по земле и т.д. Делаем постоянное движение вперед и готов раннер

Добавлено (13 мая 2015, 00:40)
---------------------------------------------
ортографическую камеру, фонарь на лоб персонажу (чтобы и ночью мог косить) и псевдо 2.5D платвормер-раннер готов smile


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

Последнее:

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

Как запатентовать, защитить техническое решение, игру, идею
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Проблема с прыжком персонажа! (Помогите C#)
  • Страница 1 из 1
  • 1
Поиск:

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