Unity3d空间与运动

Unity3D之空间与运动 空间与运动 1、简答并用程序验证 游戏对象运动的本质是什么? 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在一个法平面上。 1、游戏对象运动的本质是什么? 游戏对象运动的本质就是使用矩阵变换(平移、旋转、缩放)改变游戏对象的空间属性。观察游戏对象的Tr... 阅读详情
  1. 游戏对象运动的本质是什么?
    运动的本质是游戏对象通过脚本变化其(position)位置,(rotation)欧拉角,(scale)形状。
  2. 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…)
  3. 改变Transform属性:

    public float Power = 10;//这个代表发射时的速度/力度等,可以通过此来模拟不同的力大小
    
    public float Angle = 45;//发射的角度,这个就不用解释了吧
    
    public float Gravity = -10;//这个代表重力加速度
    
    
    
    private Vector3 MoveSpeed;//初速度向量
    
    private Vector3 GritySpeed = Vector3.zero;//重力的速度向量,t时为0
    
    private float dTime;//已经过去的时间
    
    private Vector3 currentAngle;
    
    // Use this for initialization
    
    void Start()
    
    {
    
        //通过一个公式计算出初速度向量
    
        //角度*力度
    
        MoveSpeed = Quaternion.Euler(new Vector3(0, 0, Angle)) * Vector3.right * Power;
    
        currentAngle = Vector3.zero;
    
    }
    
    // Update is called once per frame
    
    void FixedUpdate()
    
    {
    
        //计算物体的重力速度
    
        //v = at ;
    
        GritySpeed.y = Gravity * (dTime += Time.fixedDeltaTime);
    
        //位移模拟轨迹
    
        transform.position += (MoveSpeed + GritySpeed) * Time.fixedDeltaTime;
    
        currentAngle.z = Mathf.Atan((MoveSpeed.y + GritySpeed.y) / MoveSpeed.x) * Mathf.Rad2Deg;
    
        transform.eulerAngles = currentAngle;
    
    }
    1. 使用Translate平移坐标,同时改变x,y方向的位置以及通过重力改变y方向的位置:

      public float g=-10;//重力加速度
      private Vector3 speed;//初速度向量
      private Vector3 Gravity;//重力向量
      void Start () {
      Gravity = Vector3.zero;//重力初始速度为0
      speed = new Vector3(10,10,0);
      }
      private float dTime=0;
      // Update is called once per frame
      void FixedUpdate () {
      
      Gravity.y = g * (dTime += Time.fixedDeltaTime);//v=at
      //模拟位移
      transform.Translate(speed*Time.fixedDeltaTime);
      transform.Translate(Gravity * Time.fixedDeltaTime);
      }
  4. 使用Vector3的方法:
    C#
    Vector3 center = (sunrise.position + sunset.position) * 0.5F;
    //找中心点
    center -= new Vector3(0, 1, 0);
    //求出新的中心点到向量a和向量b的向量
    Vector3 riseRelCenter = sunrise.position - center;
    Vector3 setRelCenter = sunset.position - center;
    transform.position = Vector3.Slerp(riseRelCenter, setRelCenter, journeyTime);
    //对起始点和结束点修正
    transform.position += center;
    //说实话,这个方法使用起来是真的麻烦。

  5. 使用rigid body对物体施加一个重力效果而不用自己实现重力使物体做抛物线:

    private Vector3 speed;
    public float power;
    public float angle;
    // Use this for initialization
    void Start () {
        speed = Quaternion.Euler (new Vector3 (0, 0, angle)) * Vector3.right * power;
    }
    
    // Update is called once per frame
    void Update () {
        transform.position += speed * Time.deltaTime;
    }
    
    ![这里写图片描述](https://img-blog.youkuaiyun.com/20180330102443677?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlbGxvd2FuZ2xk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    
  6. 写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在一个法平面上。
public Transform mercury;
    public Transform venus;
    public Transform earth;
    public Transform mars;
    public Transform jupiter;
    public Transform saturn;
    public Transform uranus;
    public Transform neptune;
    void Start () {
        mercury.position = new Vector3 (3, 0, 0);
        venus.position = new Vector3 (-5, 0, 0);
        earth.position = new Vector3 (7, 0, 0);
        mars.position = new Vector3 (-9, 0, 0);
        jupiter.position = new Vector3 (-11, 0, 0);
        saturn.position = new Vector3 (13, 0, 0);
        uranus.position = new Vector3 (15, 0, 0);
        neptune.position = new Vector3 (-17, 0, 0);
    }

    void Update () {
        earth.RotateAround (this.transform.position, new Vector3(0, 0.99f, 0), 30 * Time.deltaTime);
        mercury.RotateAround (this.transform.position, new Vector3(0, 2.11f, 0), 47 * Time.deltaTime);
        venus.RotateAround (this.transform.position, new Vector3(0, 3.23f, 0), 35 * Time.deltaTime);
        mars.RotateAround (this.transform.position, new Vector3(0, 4.34f, 0), 24 * Time.deltaTime);
        jupiter.RotateAround (this.transform.position, new Vector3(0, 1.02f, 0), 13 * Time.deltaTime);
        saturn.RotateAround (this.transform.position, new Vector3(0, 0.98f, 0), 9 * Time.deltaTime);
        uranus.RotateAround (this.transform.position, new Vector3(0, 0.97f, 0),  6 * Time.deltaTime);
        neptune.RotateAround (this.transform.position, new Vector3(0, 0.96f, 0), 5 * Time.deltaTime);
        earth.Rotate (Vector3.up * Time.deltaTime * 250);
        mercury.Rotate (Vector3.up * Time.deltaTime * 300);
        venus.Rotate (Vector3.up * Time.deltaTime * 280);
        mars.Rotate (Vector3.up * Time.deltaTime * 220);
        jupiter.Rotate (Vector3.up * Time.deltaTime * 180);
        saturn.Rotate (Vector3.up * Time.deltaTime * 160);
        uranus.Rotate (Vector3.up * Time.deltaTime * 150);
        neptune.Rotate (Vector3.up * Time.deltaTime * 140);
    }
对于游戏牧师与魔鬼
  1. 游戏中提及的对象有牧师,魔鬼,船,河岸,河水。
  2. 玩家动作表:
项目条件
上船船已经靠岸且船上至少有一名角色
下船船上至少有一名角色
游戏胜利所有牧师与魔鬼均到达对岸
游戏失败任意一边的魔鬼数量大于牧师数量

关于游戏的详细信息请参考我的具体的博客:牧师与魔鬼

Unity3D课程——空间与运动 游戏对象运动的本质是什么 游戏对象通过脚本改变其位置,角度和大小 请用三种方法以上方法,实现物体的抛物线运动 修改Transform属性 using System.Collections; using System.Collections.Generic; using UnityEngine; public class move : MonoBehaviour { public float ... 阅读详情

相关推荐

(三)Unity3D编程实战-伪太阳系

前置知识:

vc43vc的专栏 432

一区即将要洗的DVD片子

101 Dalmatians [Animated] (2009, SE)《101斑点狗》预计2009年发行特别版12 Monkeys (05/10/2005, COM DOC)《12只猴子》预计2005年5月10日发行扩展版加评论和记录片等2001: A Space Odyssey (2006, SE)《2001:太空漫游》预计2006年发行特别版21 Grams (SE)《21克》特

现在的生活 521万+

【探秘】二维异形件重叠移除算法:从度量到消除的实战解析

本文深入解析二维异形件重叠移除算法的核心技术与实战应用,涵盖重叠度量、零件扰动策略及消除方法。通过NFP(临界多边形)技术、空间分区加速等优化手段,有效解决异形件排版中的重叠问题,提升材料利用率和计算效率。适合制造业、CAD软件开发者及算法工程师参考。

weixin_28698059的博客 252

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

开源项目实战学习之YOLO11:ultralytics-cfg-datasets-Objects365、open-images-v7.yaml文件(六)

kngines 9404

机器学习-02 模型的评估与选择

2.1 误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异成为:误差(error)。定义: 在训练集上的误差称为训练误差(training error)或经验误差(empirical error)。 在测试集上的误差称为测试误差(test error)。 学习器在所有新样本上的误差称为泛化误差(generalization error)。 显然,我们希望得到的是在新样本上表现得很好的学习器,即泛化误差小的学习器。因此,我们应该让学习器尽可能地从训练集中学出普适性的“一般特征”,这

一个小白 1705

OptiSystem仿真:波分与时分复用混合光网络的设计与性能优化

本文详细介绍了如何利用OptiSystem软件设计与优化波分复用与时分复用混合光网络。通过构建四路波分乘以四路时分的系统模型,文章阐述了从信源生成、复用合并、光纤传输到信号解复用与性能评估的全流程,并重点探讨了对抗色散、优化器件参数及探索高级调制格式等核心性能优化策略,为应对未来海量数据需求提供了高效、可行的仿真解决方案。

pink的博客 1106

TowardsDataScience 博客中文翻译 2020(九百八十四)

作者通过Imgflip生成的图片图片由作者通过Imgflip生成softmax 函数是一个激活函数,它将真实值转化为概率。在一个正常的学年,此时此刻,我可能正坐在离家两个小时的咖啡店里,读着我计算机编程课前的讲座。或者,此时此刻,我可能正在上课,试图跟上我的教授对精确方程的解释。随着世界各地的学校关闭,像我这样的学生只能靠自己来对抗拖延症。一场可悲的斗争,一场我显然不会赢的斗争。在过去的几周里,尽管我的大学有大量的在线工作,但我已经决定这是学习我所能学习的关于深度学习的一切的最佳时间。

龙哥盟 4236

微机原理-基于8086电压报警2.5V仿真系统设计

*单片机设计介绍,微机原理-基于8086电压报警2.5V仿真系统设计。

2201_75940997的博客 1083

OpenGL入门学习

说起编程作图,大概还有很多人想起TC的#include 吧?但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率、16色来做吗?显然是不行的。本帖的目的是让大家放弃TC的老旧图形接口,让大家接触一些新事物。OpenGL作为当前主流的图形API之一,它在一些场合具有比DirectX更优越的特性。1、与C语言紧密结合。OpenGL命令最初就是用C语言函数来进行

zzzzzdddddxxxxx的专栏 1560

无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

FRIGIDWINTER的博客 8002

【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)

生存和射击游戏一直是我的最爱,说起3D最普遍的应该就是射击系统了,你可以在任何情况下加入射击功能,所以我写下了这篇FPS开发记录。希望对你有帮助。在这个项目中,你将学习如何设计和实现射击系统、武器系统、玩家控制、场景设计等方面的内容。通过这个项目,你将深入了解游戏开发中的许多核心概念和技术,并且在实践中不断提升自己。本项目将带你从零开始逐步实现一个完整的第一人称射击游戏,并且会逐步引入一些高级功能,如特效、声音等。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5500

UE各种小技巧和冷知识

世界场景设置一般是调试用的,如果这里设置了就会覆盖项目设置的GameMode,所以这里不设置GameMode。但是这快捷键非常反人类,需要两只手按,非常不快捷!所以我们要自定义,在后面加个Ctrl+F,然后就舒服多了。细节面板里所有东西,都能选择 拷贝内部名称 ,各种功能都能直接复制,然后到蓝图调用!1. 选中一个蓝图函数或变量,按Alt + Shift + F,可以搜索出所有引用。中文的标点符号啥的在编程时候非常烦,勾选这个解千愁√不管中文英文都使用英文标点符号。只要知道名字就能直接找到,极速!

UE星空 1348

Python 安装 PyTorch(GPU)详细教程

本章教程,介绍如何安装PyTorch GPU版本的具体教程。

猿小白的博客 1623

HW3:Unity3D中的空间与运动

作业与练习 ① 请用三种方法以上方法,实现物体的抛物线运动。 (如,修改Transform属性,使用向量Vector3的方法) ② 写一个程序,实现一个完整的太阳系, 其他星球围绕 太阳的转速必须不一样,且不在一个法平面上

weixin_40552127的博客 577

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Unity3D中的空间与运动

文章目录1.简答并用程序验证 1.简答并用程序验证 - 游戏对象运动的本质是什么? 游戏对象的空间属性在同一个坐标系下随每一帧的变化。这里的空间属性是指transform中的position和rotation属性,即位置参数和旋转参数。 - 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 分别在两个方向上改变transform中的...

AJANEEE的博客 781

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【Unity3D】空间与运动

1. 简答并用程序验证 (1) 游戏对象运动的本质是什么? 游戏对象运动的本质是游戏对象的position、rotation、scale等属性随着帧的改变而发生改变。 (2) 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 修改Transform属性 using System.Collections; using System.C...

liangyling3的博客 361

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

unity3D学习2 空间与运动

空间与运动 简答题 1. 游戏对象运动的本质

Eric3778的博客 948

Unity3d--空间与运动

1、简答并用程序验证 游戏对象运动的本质是什么? 游戏对象运动的本质就是游戏对象Transform的改变。 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 法一:直接改变Transform的position int a = 1; void Update () { this.transform.position += V...

TempterCyn的博客 583

Unity3D作业二:空间与运动

Unity3D作业二:空间与运动 作业内容 1、简答并用程序验证 游戏对象运动的本质是什么? 运动的本质是游戏对象位置,欧拉角,形状的改变。 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 使用Vector3修改position using System.Collections; using System.Collecti...

Tifinity的博客 352

Unity3d作业||空间与运动

空间与运动 1、简答并用程序验证 游戏对象运动的本质是什么? 游戏运动本质就是使用矩阵变换(平移、旋转、缩放)改变游戏对象的空间属性。 请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 使用transform private float xSpeed = 0.3f*Mathf.Cos(Mathf.PI/4); p...

chentf5的博客 263

Unity3d-Learning Homework 2 空间与运动

Homework 2 Unity3d-Learning 空间与运动 1、简答题 1.游戏对象运动的本质是什么? 游戏对象运动的本质,是它随着页面刷新而产生的连续的运动,包括游戏对象的位置、旋转、角度、大小等。 2.请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transform属性,使用向量Vector3的方法…) 方法1 修改...

Mr.W的博客 476

Unity3d HW2-空间与运动

一、简答并用程序验证 1.游戏对象运动的本质是什么? 答:游戏对象运动的本质是对象在空间中每一帧不同位置的链接。我们在unity中对物体运动的描述其实就是让物体在一个个离散的时间点在空间中的位置不同,例如: this.transform.position += Vector3.left * Time.deltaTime; 2.请用三种方法以上方法,实现物体的抛物线运动。(如,修改Transfo...

wzycxy的博客 255

ch03空间与运动——Unity3D学习

unity3D制作魔鬼与牧师小游戏

yesor_not的博客 320

【Unity3d学习】空间与物体运动——制作简单太阳系

了解游戏对象运动的本质 首先通过初步学习,可以了解到我们在Unity中创建的物体,都会带有Transfrom的部件,其中包含了Position,Rotation,Scale三个主要部分。而实际上物体的运动就是改变这三个状态,使其能够平移、旋转、缩放,以及这三种运动的组合。构成游戏对象所有运动的基础。还有一种理解,就是通过矩阵变换,使得物体空间属性发生变化,这就是对象运动的本质。 实现物体简单运动 ...

JKJKL1的博客 1121

Unity获取物体自身坐标轴的方向以及沿着该方向运动的方法

有时候对于一个游戏对象,需要其沿着自身的坐标轴方向进行运动,那么首先如何获取自身的坐标轴方向? 获取自身的坐标轴方向可以通过transform组件进行获取(负方向加负号即可) Vector3 moveDirection = transform.right; 获取自身的x轴的方向 Vector3 moveDirection = transform.forward; 获取自身的z轴的方向 Vector3 moveDirection = transform.up; 获取自身的y轴的方向 下面...

u010029439的博客 6937
上一篇: Unity3d井字棋实现
下一篇: Unity3D 牧师与魔鬼
hellowangld
博客等级 码龄10年 15粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellowangld

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值