球体在没有重力的情况下减速

我正在制作一个 2D 方块破坏游戏;问题是我的球在一段时间后会变慢,但没有任何重力,并且弹力为 100%,所以它应该保持所有动能。我只需要球保持恒定速度。


这是我的代码:


using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class Ball : MonoBehaviour {


    public Paddle paddle;

    private Vector3 paddleToBallVector;

    private bool Started = false;


    void Start () {

        paddleToBallVector = this.transform.position 

        paddle.transform.position;

        print(paddleToBallVector);

        //this.GetComponent<Rigidbody2D>().drag = 0f;

    }   


    void FixedUpdate () {

        if (!Started) { 

            this.transform.position = paddle.transform.position + paddleToBallVector;

            if (Input.GetMouseButtonDown(0))

            {

                Debug.Log("mouse clicked, Started = " + Started);

                Started = true;

                this.GetComponent<Rigidbody2D>().velocity = new Vector2(2f, 10f);

            }

        }

    }

}


拉丁的传说
浏览 146回答 3
3回答

白衣非少年

问题不在于代码 - 它在游戏重力设置中。您可以通过以下两种方式之一解决:1) 改变球的重力比例——去球类游戏对象或Prefab,查看RigidBody2D组件。在那里,您有一个名为“重力比例”的字段,通常设置为 1。将其更改为 0.1 将使您的球轻巧快速。但是,这种设置对于具有多个级别的游戏并不理想。2)在项目设置中更改全局重力。进入编辑菜单到项目设置,然后在菜单中选择 Physics2D:在打开的面板中,您通常拥有 -9.81 的真实重力比例。将其更改为 -1 之类的内容这将使您游戏中的所有对象变轻,并减少所有级别的重力。在只有球松散并四处抛掷的砖块破坏型游戏中,这是最有意义的。

慕桂英3389331

如果你想让球有恒定的速度,你可以在每一帧中设置它&nbsp;UpdatemyRigidbody.velocity&nbsp;=&nbsp;speed&nbsp;*&nbsp;(myRigidbody.velocity.normalized);哪里myRigidBody是私人RigidBody在脚本中声明的地方,并设置Start()这样的myRigidbody&nbsp;=&nbsp;this.GetComponent<Rigidbody>();因为您不想调用GetComponent每一帧。

aluckdog

创建物理材质 2D。将弹力保持为 1,但将摩擦力降低到零。现在将该材料附加到您的 Ball Collider。你的球现在碰撞时不会失去任何速度
打开App,查看更多内容
随时随地看视频慕课网APP