Unity3D.Коллайдеры не реагируют на модель - PullRequest
0 голосов
/ 17 марта 2019

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

using UnityEngine;
using System.Collections;

public class player_Control : MonoBehaviour {
    public float upspeed;
    public float downspeed;
    public float rotationSpeed;
    Transform myTrans;
    Vector3 myPos;
    Vector3 myRot;
    float angle;

    void Start() {
        myPos = transform.position;
        myRot = transform.rotation.eulerAngles;
    }
    void FixedUpdate() { 
        angle = transform.eulerAngles.magnitude * Mathf.Deg2Rad;

        if (Input.GetKey(KeyCode.RightArrow)) { // ROTATE RIGHT
            myRot.z -= rotationSpeed;
        }
        if (Input.GetKey(KeyCode.LeftArrow)) { // ROTATE LEFT
            myRot.z += rotationSpeed;
        }
        if (Input.GetKey(KeyCode.UpArrow)) { // UP
            myPos.y += (Mathf.Cos(-angle) * upspeed) * Time.deltaTime;
            myPos.x += (Mathf.Sin(-angle) * upspeed) * Time.deltaTime;
        }
        if (Input.GetKey(KeyCode.DownArrow)) { // DOWN
            myPos.y += (Mathf.Cos(-angle) * -downspeed) * Time.deltaTime;
            myPos.x += (Mathf.Sin(-angle) * -downspeed) * Time.deltaTime;
        }
        transform.position = myPos;
        transform.rotation = Quaternion.Euler(myRot);

    }
}

1 Ответ

1 голос
/ 17 марта 2019

Ваша проблема здесь в том, что вы обходите физический движок Unity и напрямую меняете положение и вращение игроков. Проверки физики Unity построены на использовании компонента Rigidbody и имеют несколько специфических функций для изменения положения и поворота объектов, чтобы они правильно сталкивались с другими объектами в пределах сцены. Для вашего использования выше я бы посмотрел следующие две функции для изменения положения и поворота вашего персонажа:

https://docs.unity3d.com/ScriptReference/Rigidbody.MovePosition.html https://docs.unity3d.com/ScriptReference/Rigidbody.MoveRotation.html

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