在x和z轴鼠标上移动对象,但没有碰撞

问题描述 投票:0回答:1

我正在使用C#在Unity引擎中创建2D游戏。我有一个播放器对象,该对象始终在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);
c# unity3d 3d collision
1个回答
0
投票

由于Z轴是2D深度,所以我想使用x和y轴。您还需要确保播放器和要碰撞的对象上都有RigidBodies。确保他们也有一个网格collider

您可能需要将它们设置为kinematic并使用rb.MovePosition()向玩家施加力量,以获得所需的效果。

根据您的代码,您正在使用至少一个带有运动学设置的刚体。确保您的播放器也为其模型设置了此设置。如果您使用鼠标的z位置在X,Y平面上移动播放器,请忽略我的第一句话。

没有看到检查器的设置方式,仅凭代码还不足以提供真正的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.