为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
拉丁的传说 2021-10-09 10:36:48
我正在制作一个 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);            }        }    }}
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

问题不在于代码 - 它在游戏重力设置中。您可以通过以下两种方式之一解决:

1) 改变球的重力比例——去球类游戏对象或Prefab,查看RigidBody2D组件。在那里,您有一个名为“重力比例”的字段,通常设置为 1。将其更改为 0.1 将使您的球轻巧快速。但是,这种设置对于具有多个级别的游戏并不理想。

//img1.sycdn.imooc.com//616100590001540c11220522.jpg

2)在项目设置中更改全局重力。进入编辑菜单到项目设置,然后在菜单中选择 Physics2D:

//img1.sycdn.imooc.com//6161006600016ed608640862.jpg

在打开的面板中,您通常拥有 -9.81 的真实重力比例。将其更改为 -1 之类的内容

//img1.sycdn.imooc.com//6161007400014dbf07070645.jpg

这将使您游戏中的所有对象变轻,并减少所有级别的重力。在只有球松散并四处抛掷的砖块破坏型游戏中,这是最有意义的。

查看完整回答
反对 回复 2021-10-09
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

如果你想让球有恒定的速度,你可以在每一帧中设置它 Update

myRigidbody.velocity = speed * (myRigidbody.velocity.normalized);

哪里myRigidBody是私人RigidBody在脚本中声明的地方,并设置Start()这样的

myRigidbody = this.GetComponent<Rigidbody>();

因为您不想调用GetComponent每一帧。


查看完整回答
反对 回复 2021-10-09
?
aluckdog

TA贡献1847条经验 获得超7个赞

创建物理材质 2D。将弹力保持为 1,但将摩擦力降低到零。现在将该材料附加到您的 Ball Collider。你的球现在碰撞时不会失去任何速度


查看完整回答
反对 回复 2021-10-09
  • 3 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信