Hoppa till innehåll

Rigidbody och rörelse

↑

Rigidbody låter ett objekt delta i Unitys 3D-fysik. För 2D finns Rigidbody2D, med egna API:er och callbacks. Hur du flyttar ett objekt beror på om det är dynamiskt, kinematiskt eller saknar fysik.

Uppgift Vanligt val Varför
Knuffa ett dynamiskt objekt AddForce Fysiken beräknar accelerationen
Styr hastighet Rigidbody-API för hastighet Ger tydligare rörelsekontroll
Flytta ett kinematiskt objekt MovePosition Samspelar med fysiksystemet
Flytta en dekoration Transform Ingen fysisk simulering behövs
Unity C# | PushObject.cs
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public sealed class PushObject : MonoBehaviour
{
[SerializeField] private float acceleration = 6f;
private Rigidbody body;
private void Awake() => body = GetComponent<Rigidbody>();
private void FixedUpdate() => body.AddForce(Vector3.forward * acceleration, ForceMode.Acceleration);
}

ForceMode.Acceleration ger acceleration oberoende av massa. ForceMode.Force påverkas av massan och impulslägen används för snabba hastighetsförändringar.

  1. Flytta inte ett dynamiskt Rigidbody med transform.position varje bildruta och förvänta dig vanlig fysikreaktion.
  2. Kör fysikkrafter i FixedUpdate och läs input via Update eller actions.
  3. Kontrollera rätt collider och collision layers.
  4. Använd interpolation om fysiksteg ger synligt ryckig rörelse.

Se livscykeln för varför tidpunkten spelar roll.