unity3D 使用rigidbody.AddForce()出错

SeverityCodeDescriptionProjectFileLineSuppression State
ErrorCS0619'Component.rigidbody' is obsolete: 'Property rigidbody has been deprecated. Use GetComponent<Rigidbody>() instead. (UnityUpgradable)'Roll_a_ball.CSharpF:\UnityProject\Roll_a_ball\Assets\Scripts\PlayerController.cs14Active

改用:GetComponent<Rigidbody>().AddForce(movement);

Rigidbody刚体

游戏对象添加Rigidbody组件后即具备物理属性,当其受力和扭矩影响时可产生更加真实的行为。当操作刚体参数的时候,你应该在FixedUpdate 函数中使用它,物理模拟以离散的时间步执行。FixedUpdate函数在每一步之前被立即调用。使用刚体时应注意,父物体和子物体不应同时具有刚体,也 不应该缩放刚体的父级。

变量:

var velocity : Vector3                            刚体的速度向量

var angularVelocity : Vector3               刚体的角速度向量。

var drag : float                                      物体的阻力

var angularDrag : float                         物体的角阻力

var mass : float                                      刚体的质量

var useGravity : bool                             是否受重力影响

var isKinematic : bool

是否是运动学刚体。运动学刚体不受力、碰撞或关节控制,完全由动画或代码(Transform)驱动,但运动学刚体可以通过碰撞或关节影响其他刚体的运动。非运动学刚体则受力、碰撞或关节控制。

var freezeRotation : bool                      冻结旋转,使物理因素不能改变物体的旋转

var collisionDetectionMode :CollisionDetectionMode

刚 体的碰撞检测模式。为了获得最佳效果,对于快速移动的物体,应设置动态连续碰撞检测模式(ContinuousDynamic),以防止物体还没检测到碰 撞就穿越了被碰撞物体;对于被碰撞物体,应设置连续碰撞检测模式(Continuous,连续碰撞检测是基于网格几何体的静态碰撞)。由于碰撞检测模式的 选择对物理性能有很大的影响,默认情况下,应采用非连续碰撞检测模式(Discrete)。

var centerOfMass : Vector3

重心。如果你不在脚本中设置重心,它将从所有附加到刚体上的碰撞器自动计算。重心的设置关系到物理运动的真实性。

var worldCenterOfMass : Vector3         在世界坐标中刚体的重心。(只读)

var detectCollisions : bool                     碰撞检测是否启用(默认总是启用的)。

var position : Vector3

刚体的位置,只在物理步结束才应用到变换,不能用于连续移动。

var rotation : Quaternion                       刚体的旋转,只在物理步结束才应用到变换,不能用于连续旋转。

var interpolation : RigidbodyInterpolation

刚体插值,用以平滑物理运动的显示效果,默认是关闭的(None)。物理运动以离散的时间步运行,而显卡以可变的帧率渲染,这可能导致物体抖动。对于主角或相机跟随的物体,建议使用插值。

函数:

移动

function AddForce (force : Vector3, mode :ForceMode = ForceMode.Force) : void

添加一个力到刚体。作为结果刚体将开始移动。

枚举类型ForceMode

值:       Force                      添加一个可持续力到刚体,使用它的质量。

Acceleration          添加一个可持续加速度到刚体,忽略它的质量。

Impulse                  添加一个瞬间冲击力到刚体,使用它的质量。

VelocityChange     添加一个瞬间速度变化给刚体,忽略它的质量。

function AddForce (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

添加一个力到刚体。作为结果刚体将开始移动。

function AddRelativeForce (force : Vector3,mode : ForceMode = ForceMode.Force) : void

添加一个力到刚体。相对于本地坐标。

function AddRelativeForce (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

添加一个力到刚体。相对于本地坐标。

function MovePosition (position : Vector3): void

移动刚体到position。

旋转

function AddTorque (torque : Vector3, mode: ForceMode = ForceMode.Force) : void

添加一个转矩到刚体。作为结果刚体将绕着torque轴旋转,torque的长度决定转速。

function AddTorque (x : float, y : float, z: float, mode : ForceMode = ForceMode.Force) : void

添加一个转矩到刚体。作为结果刚体将绕着torque轴旋转,torque的长度决定转速。

function AddRelativeTorque (torque :Vector3, mode : ForceMode = ForceMode.Force) : void

添加一个转矩到刚体,相对于本地坐标。

function AddRelativeTorque (x : float, y :float, z : float, mode : ForceMode = ForceMode.Force) : void

添加一个转矩到刚体,相对于本地坐标。

function MoveRotation (rot : Quaternion) :void

旋转刚体到rot。

向物体表面施加力

function AddForceAtPosition (force :Vector3, position : Vector3, mode : ForceMode = ForceMode.Force) : void

在position位置应用force力。作为结果这个将在这个物体上应用一个力矩和力。为了效果的真实性,position的位置应在刚体的表面。

爆炸

function AddExplosionForce (explosionForce: float, explosionPosition : Vector3, explosionRadius : float, upwardsModifier: float = 0.0F, mode :ForceMode = ForceMode.Force) : void

应用一个力到刚体来模拟爆炸效果。爆炸力将随着到刚体的距离线形衰减。

explosionForce                             爆破力

explosionPosition                        爆炸位置

explosionRadius                           爆破半径,为0时表示无穷大

upwardsModifier                         可以理解为爆炸产生的向上冲击波的衰减值。值越大,威力越小。

function ClosestPointOnBounds (position :Vector3) : Vector3

计算刚体表面离position最近的点。可用于计算作用到刚体表面上一个点的爆炸力。

获取速度

function GetRelativePointVelocity(relativePoint : Vector3) : Vector3

获取刚体上的点相对本地坐标系的速度。获取的速度有考虑刚体的角速度。

function GetPointVelocity (worldPoint :Vector3) : Vector3

获取刚体上的点相对世界坐标系的速度。获取的速度有考虑刚体的角速度。

休眠

function Sleep () : void

强制一个刚体休眠至少一帧。刚体休眠有利于性能优化

function IsSleeping () : bool

判断刚体是否在休眠

function WakeUp () : void

强制唤醒一个刚体

碰撞扫描

function SweepTest (direction : Vector3,out hitInfo : RaycastHit, distance : float = Mathf.Infinity) : bool

碰撞扫描,返回是否将要发生碰撞。

direction                       扫描方向

hitInfo                           如果将要发生碰撞(即返回true),hitInfo将包含更多碰撞信息

distance                        扫描长度

function SweepTestAll (direction : Vector3,distance : float = Mathf.Infinity) : RaycastHit[]

碰撞扫描,返回所有碰撞点。

犯错不要紧,要紧的是发现错误的眼睛。

在5.3版本里面直接调用rigidbody.AddForce(movement);已经过期的方法改用下面的方法可以编译成功

GetComponent<Rigidbody>().AddForce(movement);

<pre name="code" class="csharp">using UnityEngine;
using System.Collections;public class PlayerController : MonoBehaviour {
<span style="white-space:pre"> </span>//定义变量控制刚体速度
  <span style="white-space:pre">    </span> public float speed;void FixedUpdate() {float moveHorizontal = Input.GetAxis("Horizontal");float moveVertical = Input.GetAxis("Vertical");Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);GetComponent<Rigidbody>().AddForce(movement * speed * Time.deltaTime);}
}

unity3d里面直接填写speed,挺简单的。

unity3D 使用rigidbody.AddForce(movement)相关推荐

  1. Unity3D中Rigidbody.velocity和Addforce的区别

    最近刚跟教程做了下游戏,涉及到了这两个方法的不同.在这里特意以我个人的见解说一下,作为一个unity学习新人,没有太高深的物理公式以及深入的解释. Rigidbody.velocity 这个方法是瞬间 ...

  2. Rigidbody.AddForce 添加力

    添加一个力到刚体.作为结果刚体将开始移动. // Adds a force upwards in the global coordinate system //在全局坐标系统添加一个向上的力funct ...

  3. Unity-Rigidbody【刚体】组件-Rigidbody.AddForce的ForceMode 力的模式

    ForceMode 力的模式 在unity中,Rigidbody.AddForce()实现对刚体物体施加力的效果,实现物体例如碰撞,爆炸等等效果 调用函数如下: public void AddForc ...

  4. unity 使用rigidbody.addforce()跳跃的正确方法

    逻辑:按下跳跃之后,现将y轴方向的速度设为0,然后再将addforce,这样在二段跳的时候不论在什么时机跳起来的高度都是一样的. rigidbody.velocity = new Vector2(ri ...

  5. Unity Rigidbody.AddForce 的 ForceMode

    举例中均设刚体质量为 m=2.0f,力向量为 f=(10.0f,0.0f,0.0f). 功能注解:ForceMode为枚举类型,用来控制力的作用方式,有4个枚举成员,在以下举例中均设刚体质量为m=2. ...

  6. Unity3D之Rigidbody组件的使用

    当游戏体加上Rigidbody时,会受到重力和碰撞的影响 Mess(质量):游戏对象的质量,游戏对象之间的质量不要相差超过100倍 Drag(阻力):游戏对象移动时受到的阻力.阻力越大,运动越慢,过大 ...

  7. Unity3D的Rigidbody类中useGravity、isKinematic和velocity的使用注解

    功能区别: a. useGravity属性是确定刚体是否接受重力加速度的感应. b. isKinematic属性是确定刚体是否接受动力学模拟,此影响不仅包括重力感应,还包括速度.阻力.质量等的物理模拟 ...

  8. 这一个月的可能用到的便签

    Bookmarks 书签栏 linux 鳥哥的 Linux 私房菜 -- 鳥哥的 Linux 私房菜 首頁 ubuntu 下安装unity3d游戏开发平台_百度经验 在 Ubuntu 16.04上,安 ...

  9. Unity3D官网教程:Roll-A-Ball实现C#代码,5.X版

    2019独角兽企业重金招聘Python工程师标准>>> 键盘小球控制代码: using System.Collections; using System.Collections.Ge ...

最新文章

  1. 鼠标终将消失,未来我们有哪些人机交互方式?
  2. java中executorservice_java中ExecutorService创建方法总结
  3. C++编程基础二 03-const形参与实参
  4. ABAP Netweaver和Cloud Foundry上的环境变量Environment Variable
  5. webpake-node-sass 报错
  6. 信息学奥赛一本通C++语言——1123:图像相似度
  7. PostgreSQL 的 target_list分析(一)
  8. 作为游戏策划,软件记录
  9. 时间序列谐波分析(HANTS)的MATLAB实现
  10. ubuntu窗口排列和分屏工具
  11. bmp 图片格式读入 cv::Mat 的 C++ 实现
  12. PySerial库的简单用法
  13. pyltp依存句法分析_依存句法分析 python pyltp实现
  14. 淘宝在线客服为什么回复那么慢
  15. ydisk安卓版本_mydisktest
  16. 闭环式数字孪生智慧交通管理系统平台应用及分析
  17. 【宋红康 MySQL数据库】【03】SQL概述_常见的数据库对象
  18. 计算机主机寿命多长,一般电脑的寿命是多久
  19. 施坦威D4三角钢琴-e-instruments Session Keys Grand S Kontakt
  20. ios怎么引入masonry_ios masonry 怎样设置边距自适应

热门文章

  1. 跟着聪明资金做交易!北上资金每天操作哪些股票一目了然
  2. 典型工业数据分析场景解读:机械设备振动监测和故障诊断
  3. 鸟哥Linux私房菜:第六章笔记
  4. (环境搭建+复现)74CMS模版注入+文件包含getshell
  5. CREStereo: Practical Stereo Matching via Cascaded Recurrent Networkwith Adaptive Correlation-论文阅读
  6. java全栈系列之JavaSE-面向对象(继承详解)035
  7. 南京中软/软通/金证/易宝等外包公司面试题
  8. 如何区分虚拟网卡和物理网卡?
  9. 数字图像处理常用函数
  10. IoT 物联网碎片化是云厂商的桎梏,中小企业的机会