Качение шарика

Общие вопросы о Unity3D

Качение шарика

Сообщение BANNERTM 24 мар 2012, 20:01

Как сделать качение шарика? Когда делаешь при помощи Addforce , то он просто скользит, а при addtorque проскальзывает!
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение Alcatraz 24 мар 2012, 20:29

крути физические материалы и настройки ригидбоди. для бильярда делал.
Unity3D Game Developer
Аватара пользователя
Alcatraz
UNITрон
 
Сообщения: 236
Зарегистрирован: 07 июн 2011, 09:12
Откуда: Москва
  • Сайт
  • ICQ

Re: Качение шарика

Сообщение BANNERTM 24 мар 2012, 20:48

Alcatraz писал(а):крути физические материалы и настройки ригидбоди. для бильярда делал.

Спасибо! А что лучше все-таки использовать? Addtorque или addforce?
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение waruiyume 24 мар 2012, 22:57

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
    private Vector3 inp;
    private Vector3 delta;
    private Vector3 oldPos;
    private const float pi2 = Mathf.PI * Mathf.PI;

    public float diam = 2f;

    public float speed = 10f;

    public Transform cam;

        // Use this for initialization
        void Start ()
        {
            oldPos = transform.position;
        }
       
        // Update is called once per frame
        void Update ()
        {
            inp.x = Input.GetAxis("Horizontal");
            inp.z = Input.GetAxis("Vertical");
        }

    void FixedUpdate()
    {
        Vector3 cp = transform.position - cam.position;
        cp.y = 0f;
        transform.Translate(Quaternion.LookRotation(cp) * inp * speed * Time.deltaTime, Space.World);
        delta = oldPos - transform.position;

        float ang = Mathf.Sin(delta.magnitude / diam / pi2) * Mathf.Rad2Deg;
        transform.RotateAround(Vector3.Cross(delta, Vector3.up), ang);
        oldPos = transform.position;
    }
}
 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Качение шарика

Сообщение BANNERTM 24 мар 2012, 23:04

waruiyume писал(а):
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class NewBehaviourScript : MonoBehaviour
{
    private Vector3 inp;
    private Vector3 delta;
    private Vector3 oldPos;
    private const float pi2 = Mathf.PI * Mathf.PI;

    public float diam = 2f;

    public float speed = 10f;

    public Transform cam;

        // Use this for initialization
        void Start ()
        {
            oldPos = transform.position;
        }
       
        // Update is called once per frame
        void Update ()
        {
            inp.x = Input.GetAxis("Horizontal");
            inp.z = Input.GetAxis("Vertical");
        }

    void FixedUpdate()
    {
        Vector3 cp = transform.position - cam.position;
        cp.y = 0f;
        transform.Translate(Quaternion.LookRotation(cp) * inp * speed * Time.deltaTime, Space.World);
        delta = oldPos - transform.position;

        float ang = Mathf.Sin(delta.magnitude / diam / pi2) * Mathf.Rad2Deg;
        transform.RotateAround(Vector3.Cross(delta, Vector3.up), ang);
        oldPos = transform.position;
    }
}
 

Сасибо, а можно тоже самое но только чтобы шарик сохраял скорость после отпускания клавиши?
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение BANNERTM 25 мар 2012, 21:40

Так все-таки кто -нибудь знает как сделать нормальное качение шара? :((
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение waruiyume 25 мар 2012, 21:47

Сделайте 2 шарика, 1й физика- толкайте его силами, 2й визуализация- копируйте позицию из физического, а затем, поворачивайте его способом, который я показал выше.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Качение шарика

Сообщение strelok 26 мар 2012, 10:34

Так чем не устраивает AddForce? Кстати, и катиться дальше будет после отпускания клавиши. Вот здесь у меня управление на AddForce построено, причём, скрипт простейший до отупения.
strelok
UNIверсал
 
Сообщения: 356
Зарегистрирован: 15 ноя 2009, 13:29
Откуда: Курск

Re: Качение шарика

Сообщение BANNERTM 26 мар 2012, 14:52

strelok писал(а):Так чем не устраивает AddForce? Кстати, и катиться дальше будет после отпускания клавиши. Вот здесь у меня управление на AddForce построено, причём, скрипт простейший до отупения.


При AddForce , шарик просто скользит по земле, ну и иногда вращается! А какой коллайдер вы использовали для шара?
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение strelok 26 мар 2012, 15:06

Это, конечно, необычно, но для шарика я использовал сферу :D
strelok
UNIверсал
 
Сообщения: 356
Зарегистрирован: 15 ноя 2009, 13:29
Откуда: Курск

Re: Качение шарика

Сообщение BANNERTM 26 мар 2012, 15:06

Вы же еще материал какой-нибудь использовали для шарика, не просто же Addforce!!!
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение BANNERTM 26 мар 2012, 15:07

strelok писал(а):Это, конечно, необычно, но для шарика я использовал сферу :D


Ну кроме сфер колайдера можно юзать и меш колллайдер!!!
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение strelok 26 мар 2012, 15:10

мне всё понятно, кажется... Вы применяете силу в Update()? Зачем для шара - меш коллайдер???
strelok
UNIверсал
 
Сообщения: 356
Зарегистрирован: 15 ноя 2009, 13:29
Откуда: Курск

Re: Качение шарика

Сообщение BANNERTM 26 мар 2012, 15:11

strelok писал(а):мне всё понятно, кажется... Вы применяете силу в Update()? Зачем для шара - меш коллайдер???

Нет я применяю силу в FixedUpdate! У меня у шара sphere collider
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Качение шарика

Сообщение strelok 26 мар 2012, 15:14

Тогда не знаю, у меня шар управляется вот таким скриптом
Синтаксис:
Используется javascript
var  force=5;
function FixedUpdate ()
{
Physic_Input();
}
function Update ()
{

}
function Physic_Input()
{
if (Input.GetKey("w")|| Input.GetKey("up"))
rigidbody.AddForce(Vector3.forward*force);
if (Input.GetKey("s")|| Input.GetKey("down"))
rigidbody.AddForce(-Vector3.forward*force);
if (Input.GetKey("d") || Input.GetKey("right"))
rigidbody.AddForce(Vector3.right*force);
if(Input.GetKey("a")|| Input.GetKey("left"))
rigidbody.AddForce(-Vector3.right*force);
}
 


всё катится.
strelok
UNIверсал
 
Сообщения: 356
Зарегистрирован: 15 ноя 2009, 13:29
Откуда: Курск

След.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12