当前位置: 首页 > article >正文

【unity进阶篇】弧度、角度和三角函数(Mathf),并实现类似蛇的运动

考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇

  • 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
  • 【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
  • 【unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
  • 【unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。

这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。

文章目录

  • 一、角度与弧度
    • 1、定义
    • 2、转换关系
    • 3、Unity 中的转换
  • 二、数学中的三角函数
    • 1、正弦函数 (sin)
    • 2、余弦函数 (cos)
    • 3、正切函数 (tan)
  • 三、Unity 中的三角函数
    • 1、`Mathf` 类
    • 2、反三角函数
    • 3、实际应用案例:蛇的运动
  • 专栏推荐
  • 完结

一、角度与弧度

1、定义

  • 角度:用度(°)来表示的角度单位。一个圆的完整旋转是 360 度。
  • 弧度:用弧长与半径的比例来表示的角度单位。一个圆的完整旋转是 2π 弧度。

2、转换关系

  • 从弧度到角度角度 = 弧度 × 180 / π ≈ 弧度 × 57.3
  • 从角度到弧度弧度 = 角度 × π / 180 ≈ 角度 × 0.01745

3、Unity 中的转换

57.3和0.01745这个值我们并不需要特地去记,因为Unity 提供了静态常量 Mathf.Rad2DegMathf.Deg2Rad 来进行角度和弧度之间的转换。
在这里插入图片描述

// 弧度转角度
float rad = 1;
float angle = rad * Mathf.Rad2Deg;
print(angle);

// 角度转弧度
angle = 1;
rad = angle * Mathf.Deg2Rad;
print(rad);

二、数学中的三角函数

这其实就是我们数学的知识,这里回顾一下

1、正弦函数 (sin)

sin(β) = 对边 / 斜边

正弦函数曲线
在这里插入图片描述

2、余弦函数 (cos)

cos(β) = 邻边 / 斜边

余弦函数曲线
在这里插入图片描述

3、正切函数 (tan)

tan(β) = cos(β) / sin(β) = 对边 / 邻边

三、Unity 中的三角函数

1、Mathf

Unity 的 Mathf 类提供了多种三角函数方法,如 Mathf.Sin, Mathf.Cos, Mathf.Tan 等。这些方法接受弧度作为参数。

注意:Mathfr 中的三角函数相关函数,传入的参数需要是弧度值

print(Mathf.Sin(30 * Mathf.Deg2Rad)); // 输出约 0.5
print(Mathf.Cos(60 * Mathf.Deg2Rad)); // 输出约 0.5
print(Mathf.Tan(45 * Mathf.Deg2Rad)); // 输出约 1

2、反三角函数

反三角函数用于计算给定的正弦或余弦值对应的角(以弧度表示)。

作用:通过反三角函数计算正弦值或余弦值对应的弧度值。

  • 反正弦函数 (Asin):计算给定的正弦值对应的角。
  • 反余弦函数 (Acos):计算给定的余弦值对应的角。

注意:反三角函数得到的结果是正弦或者余弦值对应的弧度

float rad = Mathf.Asin(0.5f);
print(rad * Mathf.Rad2Deg); // 输出约 30 度

rad = Mathf.Acos(0.5f);
print(rad * Mathf.Rad2Deg); // 输出约 60 度

3、实际应用案例:蛇的运动

假设我们想要实现一条蛇在场景中做波浪形运动,可以使用正弦函数来控制蛇左右摆动。

public class SnakeMovement : MonoBehaviour
{
    // 面朝向移动速度
    public float moveSpeed = 5;
    // 左右曲线移动变化的速度
    public float changeSpeed = 2;
    // 左右曲线移动距离控制
    public float changeSize = 0.5f;

    private float time = 0;

    void Update()
    {
        // 前进移动
        transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);

        // 左右曲线移动
        time += Time.deltaTime * changeSpeed;
        transform.Translate(Vector3.right * changeSize * Mathf.Sin(time) * Time.deltaTime);
    }
}

其实也可以做比如做船在水面上下来回波动的效果


专栏推荐

地址
【零基础入门unity游戏开发——C#篇】
【零基础入门unity游戏开发——unity通用篇】
【零基础入门unity游戏开发——unity3D篇】
【零基础入门unity游戏开发——unity2D篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述


http://www.kler.cn/a/510133.html

相关文章:

  • C++/QT环境下图像在窗口下等比例渲染绘制
  • 3. Go函数概念
  • nuiapp在APP中的.nvue页面中使用webview展示空白的问题
  • Redis瓶颈和调优
  • Unity HybridCLR Settings热更设置
  • Zookeeper 数据迁移实战:基础环境搭建与高效迁移方案全览
  • Django SimpleUI 自定义功能实战
  • 【漏洞预警】FortiOS 和 FortiProxy 身份认证绕过漏洞(CVE-2024-55591)
  • 网络系统管理Linux环境——AppSrv之SSH
  • 天机学堂5-XxlJobRedis
  • 硬件学习笔记--34 GB/T17215.321相关内容介绍
  • C++实现设计模式---迭代器模式 (Iterator)
  • Django 和 Vue3 前后端分离开发笔记
  • OpenAI推出首个AI Agent!日常事项自动化处理!
  • 深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
  • Boost Asio TCP异步服务端和客户端
  • 数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)
  • 2025年编程语言热度分析:Python领跑,Go与Rust崛起
  • 考研计算机组成原理——零基础学习的笔记
  • PHP语言的字符串处理
  • 深度学习实战:使用卷积神经网络(CNN)进行图像分类
  • 使用Pytorch完成图像分类任务
  • 数据分析如何正确使用ChatGPT进行辅助?
  • 《多模态语言模型的局限性与生态系统发展现状分析》
  • Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5
  • 拟合算法 (matlab工具箱)