У этого сценария Unity нет причин заставлять спрайт двигаться, но он движется - PullRequest
0 голосов
/ 02 сентября 2018

Вот код:

с использованием UnityEngine;

public class playerMovement : MonoBehaviour {

    public Rigidbody2D rb;
    public float strength = 100f;


    void Start () {
        //Initialize the body of the sprite so that forces
        //can be applied.
        rb = GetComponent<Rigidbody2D>();
    }


    // Update is called once per frame
    void FixedUpdate () {
        //Note2Self: var says this is a variable of unspecified type.
        var touch = new Touch();

        /*
        if (touch.phase == TouchPhase.Began){
            rb.AddForce(transform.forward * strength);
        }*/

        if (Input.anyKey)
            rb.position.Set(0, 100);
    }
}

Я пытался практиковать некоторые базовые вещи в Unity (я вообще не привык к программированию в IDE, мы только что использовали vim в моей программе), когда я натолкнулся на эту странность.

Во-первых, я не понимал, почему спрайт вообще перемещается, когда не может быть сенсорной идентификации, поскольку я на самом деле не проверял это на мобильном устройстве. Поэтому я прокомментировал это, и по какой-то причине спрайт все еще движется. Этот код не должен ничего делать, но это так.

Я проверил, использует ли спрайт обновленный скрипт - это так, - и я проверил, нацелен ли скрипт на правильное твердое тело и является ли он solidbody2D. Это.

Что происходит?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Если он просто падает, возможно, под действием силы тяжести.

Вы можете отключить это в своем скрипте, добавив rb.gravityScale = 0; в конце вашей Start() функции

OR

, установив его в редакторе внутри компонента твердого тела enter image description here

0 голосов
/ 02 сентября 2018

я посмотрел в документации по единству: https://docs.unity3d.com/ScriptReference/Rigidbody2D.html который говорит, что применение компонента Rigidbody2D к объекту поместит его под контроль физического движка.

Класс Rigidbody2D по существу обеспечивает те же функциональные возможности в 2D, что и класс Rigidbody в 3D. Добавление компонента Rigidbody2D в спрайт позволяет управлять физическим движком. Само по себе это означает, что спрайт будет зависеть от силы тяжести и может управляться из сценариев с помощью сил.

Я неоднократно сталкивался с проблемами с твердыми телами, я предлагаю вам проверить компонент RigidBody2D в окне инспектора единства и не снимать флажок использовать гравитацию.

Кроме того, вы можете просто написать собственный скрипт без использования твердого тела. Выполнение поиска на YouTube, вероятно, даст вам именно то, что вам нужно для этого. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...