Все объекты в игре вибрируют (трясут) вперед и назад при перемещении игрока. Как мне сделать это гладко?

Я новичок в единстве, я искал эту проблему, но не нашел удовлетворительного ответа.

У меня есть куб как игрок с прикрепленным твердым телом (гравитация отключена)

и несколько других больших кубов в виде зданий и камеры, прикрепленной к игроку.

Когда я перемещаю игрока с помощью клавиш со стрелками, он движется плавно, но все другие объекты вибрируют, так как я увеличиваю скорость земли игрока, а звезды зданий вибрируют все больше и больше.


Мой сценарий игрока: -

    using UnityEngine;
using System.Collections;

public class playerController : MonoBehaviour {

public Rigidbody player;
public float speed;
private Vector3 vect;

// Use this for initialization
void Start () {

    player = GetComponent<Rigidbody> ();
}


void  Update () {
    float moveH = Input.GetAxis ("Horizontal");
    float moveV = Input.GetAxis ("Vertical");
    vect = new Vector3 (moveH,0.0f,moveV);   
}

void FixedUpdate () {
    player.velocity = vect*speed;
}

}

2] Сценарий моей камеры: -

    using UnityEngine;
using System.Collections;

public class CameraController : MonoBehaviour {

public Transform player;
public  GameObject cameraa;
private Vector3 offset;
public float speed;


void Start () {

    //calculating offset
    offset = cameraa.transform.position - player.position;
}

// Update is called once per frame
void    FixedUpdate () {

    cameraa.transform.position = player.position + offset;
}
}
  • В камере я пробовал Update (), FixedUpdate () и LateUpdate (), но эффект был почти таким же, а не плавным.

Как сделать так, чтобы земля и другие объекты двигались плавно?


person Makarand    schedule 22.11.2016    source источник
comment
Используйте AddForce вместо изменения скорости, если вы хотите, чтобы физика работала правильно (возможно, это также поможет с вашей текущей проблемой). Вдобавок выберите SmoothDamp (с перемещением кулачка). Если все еще не идеально, проверьте значения перетаскивания и изменения скорости Debug.Log; Я предполагаю, что у вас несовершенное скольжение двух поверхностей, но вы продолжаете сильно давить на куб   -  person    schedule 22.11.2016
comment
Как правило, вы не можете установить скорость объекта в Unity. Просто поэкспериментируйте с AddForce.   -  person Fattie    schedule 25.01.2017


Ответы (1)


Вы можете избежать вибрации игрока, изменив значение Bounce-Threshold в настройках физики b (edit> project-settings> Physics> Bounce-Threshhold) на что-то вроде 8.

person DevHawk    schedule 04.12.2018