Unity2D中玩家的音调变化摩擦力>>

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

我对Unity和C#都是陌生的,已经研究了几天。我目前正在尝试阻止播放器滑动,并为此设置了较高的播放器材料摩擦值,以使其不会滑动。但是,这会导致我的角色走得太快的问题。为了解决这个问题,我创建了一个带有BoxCollider2D的子对象,该对象被标记为可以修改的摩擦控制器。我得到一个代码,当我开始移动时,它将物理材料的摩擦值更改为0,而当应该停止时将其更改为100。问题在于,尽管这会更新材质本身,但不会影响盒碰撞器设置。有人知道解决方案吗?

using System.Collections.Generic;
using System.Collections.Specialized;
using UnityEngine;

public class Player_Movement : MonoBehaviour
{

    GameObject frictionController;
    public BoxCollider2D collider;

    public float speed = 400f;
    public float jumpForce;
    private float friction;
    private Rigidbody2D rb2d;
    private bool isMoving;
    // Start is called before the first frame update
    void Start()
    {

        rb2d = GetComponent<Rigidbody2D> ();
    }

    // Update is called once per frame

    void FixedUpdate()
    {




        float moveHorizontal = Input.GetAxis("Horizontal");


        Vector2 movement = new Vector2(moveHorizontal,0);


        rb2d.AddForce(movement * speed);


    }
    void Update()
    {
        frictionController = GameObject.FindWithTag("Friction Controller");
        collider = frictionController.GetComponent<BoxCollider2D>();



        if (Input.GetKey("a") || (Input.GetKey("d")))
        {
            { Debug.Log("Pressed Button"); }
           collider.sharedMaterial.friction = 0;

        }   else { collider.sharedMaterial.friction = 100; }
///This part isn't complete yet

        float moveVertical = Input.GetAxis("Vertical");

        Vector2 jump = new Vector2(0, moveVertical);

        if (Input.GetKeyDown("space"))
        {
            rb2d.AddForce(Vector3.up * jumpForce);
        }
    }
}
    

我对Unity和C#都是陌生的,已经研究了几天。我目前正在尝试阻止播放器滑动,并为此设置了播放器的摩擦值...

c# unity3d
1个回答
0
投票

我不确定您的方法是否特别好,以后可能会给您带来问题。因为您使用的是物理系统,所以更好的方法是在要停止时对刚体施加力,该力与速度成反比。

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