Unity学习笔记——Unity基础四:刚体及脚本初步

本文介绍如何在Unity中使用刚体组件实现物理模拟,并通过C#脚本控制刚体运动,包括创建刚体、获取刚体组件、施加力等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、刚体

刚体是赋予物体模拟的物理属性的组件。在组件栏中点击add Component->rigidbody便可以为选中的物体创建刚体。当然,现在创建的刚体只有基本的物理属性,更加高级的操作需要借助到脚本来进行控制。

二、脚本

Unity中的使用的脚本语言为JavaScript和C#,目前C#使用的更为广泛。创建脚本可以通过组件栏中点击add Component->new script或者直接在资源文件下create->script然后拖动脚本文件到绑定的物体上。

编辑代码之前,请先检查一下绑定的编辑器。点击左上角菜单栏中的edit->preferences进入设置,随后在External Tools中查看External script Editor 选项

1.基本代码

打开脚本文件后,基本代码如下:

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

public class cube1 : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}
这里创建了一个和文件名相同的类,有两个默认方法。start()表示初始方法,仅在游戏初始化时加载一次,update()表示持续性执行的方法,会按照FPS的频率来执行其中的代码。
2.获取对象及操作

在类中可直接定义私有变量来获取场景中的对象,例如获取刚体:

//创建刚体引用:
    private Rigidbody cube1Rigidbody;

	// Use this for initialization
	void Start () {
    //获取刚体对象:
        cube1Rigidbody = GetComponent<Rigidbody>();
	}
注意上面的代码,引用在成员变量中创建,而对象则在start()中获取。这么写的具体原因需要对C#有一定的了解。

如果要在游戏中对刚体进行进一步的操作,则需要在update()中写入代码进行控制,例如:

void Update () {
        cube1Rigidbody.AddForce(new Vector3(1,0,0));
	}
cube1Rigidbody为之前创建的成员变量,如果定义在其他方法内的话将无法访问到。AddForce()是刚体对象Rigidbody的一个方法,表示施加力,Vector3是向量类,这里表示创建了一个3维向量(1,0,0)。整句代码的作用是对刚体施加x方向1牛顿的作用力。

如果要将操作绑定至键盘上,我们可以这样写:

//检测键盘水平输入,默认为AD及左右键
        float h = Input.GetAxis("Horizontal");
        cube1Rigidbody.AddForce(new Vector3(h,0,0));
Input是一个输入对象,GetAxis表示获取键盘输入,Horizontal是水平的意思,即获取键盘水平上的输入,一般默认为AD或左右键。这个方法最终会返回一个float类型的数字,我们将这个数字代入到vector中,变可以通过键盘输入来控制刚体的受力了。同理,加入垂直方向上的控制只要在多加一句相似的代码即可:

float v = Input.GetAxis("Vertical");

即获取垂直方向上的输入,默认WS和上下键,吧v替换到vector中的第二项即可。

当然,这样不好控制物体的受力变化,我们可以对vector进行乘操作来控制它,当然这样也是不方便的,我们还能在整个类的成员变量中加入一个公有的变量来控制,使用public定义的成员变量可以和unity编辑界面绑定。

//力的控制:
    public int F = 0;





### 如何在 Unity 2D 中创建和设置 Rigidbody 的物理材质 要在 Unity 2D 中为 Rigidbody 创建并应用物理材质,需遵循以下方法: #### 物理材质的创建 1. **新建物理材质资源** 在项目窗口中右键点击空白区域,在弹出菜单中选择 `Create -> Physics Material 2D` 来创建一个新的物理材质文件。这一步会生成一个 `.physicMaterial` 文件[^1]。 2. **调整摩擦系数与弹性参数** 打开新创建的物理材质文件后,可以看到两个主要属性: - **Friction (摩擦力)**:控制表面之间的滑动阻力大小。值越低表示表面越光滑。 - **Bounciness (反弹度)**:定义物体碰撞后的回弹程度。数值范围通常介于0到1之间,其中1代表完全反射的能量损失最少的情况。 #### 将物理材质应用于 Rigidbody 或 Collider 1. **关联至 Rigidbody 组件** 虽然 Rigidbody 自身不直接支持指定物理材质,但它可以通过其绑定的 Collider 获取这些特性。因此实际操作上应将此材质拖拽分配给对应的 Collider 2D 组件下的 “Material” 字段[^3]。 2. **Collider 上的应用优先级说明** 根据已知规则,当存在多个可能影响对象行为的因素时,它们按照如下顺序生效: - 首先是特定的 Collider 2D 设置; - 接着是附加在其上的 Rigidbody 定义的行为模式; - 最终才是全局默认设定的通用物理材料表现形式。 以下是简单的脚本示例用于动态更改 collider 的 material 属性: ```csharp using UnityEngine; public class ChangePhysicsMaterial : MonoBehaviour { public PhysicMaterial newMaterial; void Start() { BoxCollider2D boxCollider = GetComponent<BoxCollider2D>(); if(boxCollider != null && newMaterial != null){ boxCollider.sharedMaterial = newMaterial; } } } ``` 通过上述方式即可完成自定义物理特性的配置工作,并实现更精确的游戏逻辑需求管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值