版本: Unity 6 (6000.0)
语言英语
  • C#

ForceMode2D

枚举

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们不能接受所有提交的内容,但我们会阅读用户提出的每一个更改建议,并在适当的情况下进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

使用 Rigidbody2D.AddForce 应用力的选项。

使用此方法对二维刚体应用特定类型的力。可以应用两种类型的力:力模式和冲量模式。对于三维刚体,请参阅 ForceMode

//This script adds force to a Rigidbody. The kind of force is determined by which buttons you click.

//Create a Sprite and attach a Rigidbody2D component to it //Attach this script to the Sprite

using UnityEngine; using UnityEngine.EventSystems;

public class AddingForce : MonoBehaviour { //Use to switch between Force Modes enum ModeSwitching { Start, Impulse, Force }; ModeSwitching m_ModeSwitching;

//Use this to change the different kinds of force ForceMode2D m_ForceMode; //Start position of the RigidBody, use to reset Vector2 m_StartPosition;

//Use to apply force to RigidBody Vector2 m_NewForce;

//Use to manipulate the RigidBody of a GameObject Rigidbody2D m_Rigidbody;

void Start() { //Fetch the RigidBody component attached to the GameObject m_Rigidbody = GetComponent<Rigidbody2D>(); //Start at first mode (nothing happening yet) m_ModeSwitching = ModeSwitching.Start;

//Initialising the force to use on the RigidBody in various ways m_NewForce = new Vector2(-5.0f, 1.0f);

//This is the RigidBody's starting position m_StartPosition = m_Rigidbody.transform.position; }

void Update() { //Switching modes depending on button presses switch (m_ModeSwitching) { //This is the starting mode which resets the GameObject case ModeSwitching.Start:

//Reset to starting position of RigidBody m_Rigidbody.transform.position = m_StartPosition; //Reset the velocity of the RigidBody m_Rigidbody.velocity = new Vector2(0f, 0f); break;

//This is the Force Mode case ModeSwitching.Force: //Make the GameObject travel upwards m_NewForce = new Vector2(0, 1.0f); //Use Force mode as force on the RigidBody m_Rigidbody.AddForce(m_NewForce, ForceMode2D.Force); break;

//This is the Impulse Mode case ModeSwitching.Impulse: //Make the GameObject travel upwards m_NewForce = new Vector2(0f, 1.0f); //Use Impulse mode as a force on the RigidBody m_Rigidbody.AddForce(m_NewForce, ForceMode2D.Impulse); break; } }

//These are the Buttons for telling what Force to apply as well as resetting void OnGUI() { //If reset button pressed if (GUI.Button(new Rect(100, 0, 150, 30), "Reset")) { //Switch to start/reset case

m_ModeSwitching = ModeSwitching.Start; }

//Impulse button pressed if (GUI.Button(new Rect(100, 60, 150, 30), "Apply Impulse")) { //Switch to Impulse mode (apply impulse forces to GameObject)

m_ModeSwitching = ModeSwitching.Impulse; }

//Force Button Pressed if (GUI.Button(new Rect(100, 90, 150, 30), "Apply Force")) { //Switch to Force mode (apply force to GameObject) m_ModeSwitching = ModeSwitching.Force; } } }

属性

使用刚体的质量对刚体添加一个力。
冲量使用刚体的质量对刚体添加一个瞬时力的冲量。