首页 > 解决方案 > 给游戏对象速度/速度并转换向量点

问题描述

我目前正在使用 c# 脚本统一开发游戏,但有一个小问题。我试图给我的一个游戏对象一个恒定的速度/速度,而不受其他重力、阻力或除速度之外的任何其他类型的物理特性的影响。我查看了 Unity 手册以找到任何可以帮助我解决此问题的类,我似乎找到了一个可以完成这项工作的类: https ://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html

我对其进行了编辑以使其适合我的游戏,因为这是一个不受玩家影响的游戏对象,但每次我在测试屏幕中运行游戏时都没有任何反应(对象保持静态)。我想知道是否有人知道 Unity 或 C# 中处理此问题的类,或者通常知道我如何实现这一点。是让它同时影响屏幕上出现的所有游戏对象,还是只影响少数几个?其次,我还想知道如何将刚体速度向量 2 从世界点转换为屏幕点?

非常感谢。

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

public class BallSpeed : MonoBehaviour
{
    public Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        rb.velocity = new Vector2(0, 100);

    }
}

Expected result: The game object moves upwards with a speed of 100.
Actual result: Nothing happens.

标签: c#unity3dgame-enginegame-physics

解决方案


请务必检查您Rigidbody2D是否在检查器中设置为动态,因为运动学和静态刚体没有物理。如果您不希望它是动态的,只需使用它rb.Translate()。但是,永远不要转换静态刚体,因为它会与引擎对其进行的优化相混淆,而是使用运动学刚体进行转换。


推荐阅读