前文:https://blog.csdn.net/Jaihk662/article/details/86757037(Rigidbody物理类组件)

https://blog.csdn.net/Jaihk662/article/details/86759460(碰撞体)

PS:注释和讲解部分在代码中

一、给物体添加力

两个方法:

Rigidbody.AddForce(Vector3,ForceMode):给刚体添加一个力,让刚体按世界坐标系进行运动

Rigidbody.AddRelativeForce(Vector3,ForceMode):给刚体添加一个力,让刚体按自身坐标系进行运动

注意:物体运动过程中自身坐标系可能随时发生改变(例如球滚动),这就意味着按自身坐标系运动方向可能会随时发生变化

Vector3:力的向量,ForceMode:力的模式(枚举类)

四种力的模式(Ft=mv):

  1. ForceMode.Force:给物体一个持续的力
  2. ForceMode.Acceleration:给物体一个持续的加速度,但是忽略其质量,质量被默认为1
  3. ForceMode.Impulse:给物体添加一个瞬间的力
  4. ForceMode.VelocityChange:给物体添加一个瞬间的加速度,忽略其质量
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Text1: MonoBehaviour
{//因为Start()只会在开始游戏时被执行一次,所以一般都用来初始化private Transform myTransform;      //实例化Transform对象private Rigidbody myRigidbody;void Start(){Debug.Log("Start");     //输出调试myTransform = gameObject.GetComponent<Transform>();        //获取相应对象的引用myRigidbody = gameObject.GetComponent<Rigidbody>();}// Update is called once per framevoid Update(){if(Input.GetMouseButtonDown(1))myRigidbody.AddForce(new Vector3(0, 0, -3), ForceMode.Impulse);if(Input.GetMouseButton(0))myRigidbody.AddForce(new Vector3(0, 0, -10), ForceMode.Force);      //如果动不了,可能是力量太小,需要调整向量参数}
}

二、FixedUpdate()固定更新方法

要知道正常游戏1帧=1次动画渲染,当你显卡不行,那么1秒可能只有20帧,如果追求极致,1秒可以144帧,也就是每帧不固定,这个时候就需要固定刷新时间/方法调用时间。特别是:在Update()方法中执行物理操作,会出现卡顿的情况

这样,所有和物理相关的操作,代码都要写在 FixedUpdate() 方法体内

FixedUpdate() 的固定更新的时间间隔是0.02秒,也就是1秒执行50次。

手动设置方法:Edit→Project Settings→Time面板,里面的Fixed Timestep参数即是时间间隔

正确代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Text1: MonoBehaviour
{//因为Start()只会在开始游戏时被执行一次,所以一般都用来初始化private Transform myTransform;      //实例化Transform对象private Rigidbody myRigidbody;void Start(){Debug.Log("Start");     //输出调试myTransform = gameObject.GetComponent<Transform>();        //获取相应对象的引用myRigidbody = gameObject.GetComponent<Rigidbody>();}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.W)){Debug.Log("刚体向前移动");myRigidbody.MovePosition(myTransform.position + (new Vector3(0, 0, 1)));}if (Input.GetKeyDown(KeyCode.A)){Debug.Log("刚体向左移动");myRigidbody.MovePosition(myTransform.position + (new Vector3(-1, 0, 0)));}if (Input.GetKeyDown(KeyCode.S)){Debug.Log("刚体向后移动");myRigidbody.MovePosition(myTransform.position + (new Vector3(0, 0, -1)));}if (Input.GetKeyDown(KeyCode.D)){Debug.Log("刚体向右移动");myRigidbody.MovePosition(myTransform.position + (new Vector3(1, 0, 0)));}}void FixedUpdate(){if (Input.GetMouseButtonDown(1))            //按下鼠标右键myRigidbody.AddForce(new Vector3(0, 0, -3), ForceMode.Impulse);if (Input.GetMouseButton(0))                //压住鼠标左键myRigidbody.AddForce(new Vector3(0, 0, -10), ForceMode.Force);}
}

效果如下:

Unity3D基础13:给物品添加力相关推荐

  1. Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)

    Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作) 一.属性介绍 1.主面板Particle System (1)Duration:粒子发射周期 图中,5.00即在发射5秒后进入下一个 ...

  2. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性--多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  3. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  4. 命名空间_python基础 13 类命名空间于对象、实例的命名空间,组合方法

    python基础 13 类命名空间于对象.实例的命名空间,组合方法 1.类命名空间于对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两 ...

  5. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

  6. Unity3D基础14:碰撞检测

    前文:https://blog.csdn.net/Jaihk662/article/details/86759460(碰撞体) https://blog.csdn.net/Jaihk662/artic ...

  7. Unity3D基础2:新建模型

    前文:https://blog.csdn.net/Jaihk662/article/details/86743037(Unity3D基础操作) 一.尺寸与方向 尺寸:默认的方块(Cube)长宽高都是1 ...

  8. 作业1 OO基础1-3、 设计一个教师类Teacher(属于cn.net.sdkd包)

    作业1 OO基础1-3. 设计一个教师类Teacher(属于cn.net.sdkd包) 要求: 1)属性有编号(int no).姓名(String name).年龄(int age).所属学院(Str ...

  9. 【Unity3D基础教程】给初学者看的Unity教程(零):如何学习Unity3D

    转自:https://www.cnblogs.com/neverdie/p/How_To_Learn_Unity3D.html(http://www.cnblogs.com/neverdie/) Un ...

最新文章

  1. 渣科如何逆袭进阿里 No.137
  2. 缓存 Memached
  3. cad vba 打开文件对话框_CAD文件损坏?无法打开?别急,这八种方法或许能帮到你...
  4. android新拟态实现方法,Android 新拟态UI (Neumorphism)
  5. Java设计模式学习总结(4)——创建型模式之单例模式
  6. cad填充图案乱理石_cad填充图案(cad中如何进行图案填充?)
  7. 计算机论文的字体要求,论文格式及字体大小要求(标准)
  8. java jdom 创建xml_java中使用jdom生成xml
  9. Scrapy豆瓣电影top250(excel保存和图片下载)
  10. H5 打开微信小程序 公众号
  11. 获取基因的所有转录本(不同亚型)的外显子区域
  12. [proxy:0:0@WORKSTATION-DEV] HYDU_sock_write (utils/sock/sock.c:256): write error (Broken pipe)
  13. 悬浮窗——判断及跳转(包含OPPO 5.1 系统等)
  14. 谷歌浏览器访问抖音网页版白屏
  15. matlab矩阵逆时针旋转90度
  16. Cesium 之加载倾斜摄影3d模型(解决倾斜漂移问题)
  17. 【学习OpenCV4】OpenCV4与opencv-contrib模块介绍
  18. Google Map 离线地图 - Ok Maps
  19. 如何用数学课件制作工具画出固定长度的线段
  20. iso20000认证叫什么,iso20000标准?

热门文章

  1. 学python能干什么工作-什么是Python?学完之后能做哪些工作?
  2. python编程语言-为什么Java、Python会成为程序员最害怕的编程语言?
  3. 语音识别相关工具和资料分享
  4. 华哥讲堂:解析智能电视语音控制功能
  5. 你了解语音识别技术吗?
  6. 孩子忽悠家长充值?腾讯游戏在人脸识别中加入语音提醒
  7. python+opencv打开摄像头、拍摄指定次数的照片_python+openCV调用摄像头拍摄和处理图片的实现...
  8. Vue双向数据绑定 ~ 非常详细哦
  9. ActionScript 3.0 API 中的 Video 类
  10. H.264 无参考视频质量评价方法 (使用了基于遗传编程方法的符号回归)