Перемещение объекта мышью по осям x и z, но столкновения нет - PullRequest
0 голосов
/ 28 февраля 2020

Я создаю 2D-игру на движке Unity с C#. У меня есть объект игрока, который последовательно перемещается вверх по осям x и z, и я хочу, чтобы игрок сталкивался с препятствиями.

Я уже что-то пробовал, зная, что замораживаю положение препятствия, чтобы мои препятствия прекратились двигаясь с их позиции. так как я могу сделать так, чтобы игрок столкнулся с ними? Спасибо.

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class player : MonoBehaviour
{

    public float distance = 1.0f;

   private Rigidbody rb;

    public float speed = 10f;

    private Vector2 direction;

    private Vector3 mouseposition;

    public bool useInitalCameraDistance=false;

    private float actualDistance;

   private float deltaX , deltaY;

    private float dirz, diry;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.isKinematic = true;

        if (useInitalCameraDistance)
        {
            Vector3 toobjectvector = transform.position - Camera.main.transform.position;
            Vector3 lineardistancevector = Vector3.Project(toobjectvector,Camera.main.transform.forward);
            actualDistance = lineardistancevector.magnitude;
        }
        else
        {
            actualDistance = distance;
        }

    }

    void FixedUpdate ()
    {

        Vector3 mouseposition = Input.mousePosition;
        mouseposition.z = actualDistance;
        transform.position = Camera.main.ScreenToWorldPoint(mouseposition);
        transform.position = Vector3.Slerp(transform.position , Camera.main.ScreenToWorldPoint(mouseposition),0.01f);

1 Ответ

0 голосов
/ 28 февраля 2020

Поскольку ось Z - это глубина в 2D, вы, вероятно, захотите использовать оси x и y. Вам также необходимо убедиться, что у вас есть RigidBodies как на игроке, так и на объектах, с которыми вы хотите столкнуться. Убедитесь, что у них также есть коллайдер me sh .

. Возможно, вам придется установить для них значение kinemati c и использовать rb.MovePosition () для приложите силы к игроку, чтобы добиться эффекта, который вы ищете.

В соответствии с вашим кодом вы используете хотя бы одно твердое тело с набором kinemati c. Убедитесь, что у вашего плеера также есть этот набор для их модели. Если вы используете положение мыши по оси z, чтобы переместить игрока в плоскости X, Y, не обращайте внимания на мое первое предложение.

Не видя, как у вас есть настройки инспектора, одного только кода недостаточно, чтобы действительно помочь.

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