3D游戏编程与设计之空间与运动

3D游戏编程与设计

第三次作业 · 空间与运动


一、简答题


1.游戏对象运动的本质是什么?

Answer:

本质就是使用矩阵变换(平移、旋转、缩放)来改变它的空间属性。

2.请用三种方法以上方法,实现物体的抛物线运动。

Answer:

能想到的三种方法是修改 position 、使用 vector3 、使用 Regidbody 的方法,下面我们一一进行阐述。

  • 直接修改 Transform.position

    public float speed_x = 2.0f;
    public float speed_y = 0;
    public int time = 0;
    
    void Update()
    {
        time +=(float)Time.deltaTime;
        float distance_x, distance_y;
        distance_x = (float)(speed_x * time);  
        distance_y = (float)(0.5 * 10 * time *time);
        this.transform.position += Vector3.right * distance_x;
        this.transform.position += Vector3.down * distance_y;
    
    }
    
  • 利用Vector3的方法

    //前面部分的参数设定同上面部分,我们只写一下Update的内容
    void Update()
    {
        time +=(float)Time.deltaTime;
        float distance_x, distance_y;
        distance_x = (float)(speed_x * time);  
        distance_y = (float)(0.5 * 10 * time *time);
      	this.transform.position += new Vector3(distance_x, distance_y, 0); 
    }
    
  • 利用 regidbody 的方法

    //我们给予刚体一个初始速度,直接利用Rigidbody就可以模拟抛物线的运动。
    public Rigidbody rb;
    public Vector3 firstspeed;
    
    void Start()
    {
        rb = GetComponent<Rigidbody>();
        rb.isKinematic = true;
    }
    
    void FixedUpdate()
    {
        firstspeed = new Vector3(0, 0, 0);
        rb.velocity = firstspeed;
    }
    

3.写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在一个法平面上。

Answer:

这个题目其实是课堂上我们地球绕着太阳旋转的升级版。

说实话,太阳系运动的程序并不是很难写,但是配置的过程比较麻烦,其实主要牵扯到的就是两个函数。

  • Rotate : 完成星球自转的函数

    public void Rotate(Vector3 eulers);
    //`eulers` 就是我们想要旋转的角度
    
  • RotateAround :完成星球公转的函数

    public void RotateAround(Vector3 point, Vector3 axis, float angle);
    //其中point就是我们需要旋转的原点,这里就是太阳所在的坐标点,`axis`就是围绕轴,angle是啥大家都懂
    

在我的构建过程中,为了方便,直接将 sun 的位置坐标设定为(0, 0, 0),下面我们以地球为例,po一下代码。

GameObject.Find("Earth").transform.RotateAround(new Vector3(0, 0, 0), Vector3.up, 50 * Time.deltaTime);
GameObject.Find("Earth").transform.Rotate(Vector3.up * Time.deltaTime * 8000);

当然,因为要求在不同的法平面上,所以我们要将 Vector3.up 做出一定的修改。例如,改为 new Vector(0,1,0) 。其他的几个星球类似,太阳只设定自转即可,但是几个行星间的 axis 设定要不一样。

最后,我们得到的架构图如下:
在这里插入图片描述
将我们的脚本拖进去运行一下,发现还是蛮漂亮的。为了使得运行的更加清晰,我们对每个行星增加了Trail Render ,增加它的时间后,会出现轨道的效果。最后的运行图如下面所示:
在这里插入图片描述
除了太阳不太尽如人意……但是我找了半天真的没找到好看的太阳贴纸,只找到这个像鸭蛋一样颜色诡异的东西。

二、编程实践


  • 阅读以下脚本:

    Priests and Devils

    Priests and Devils is a puzzle game in which you will help the Priests and Devils to cross the river within the time limit. There are 3 priests and 3 devils at one side of the river. They all want to get to the other side of this river, but there is only one boat and this boat can only carry two persons each time. And there must be one person steering the boat from one side to the other side. In the flash game, you can click on them to move them and click the go button to move the boat to the other direction. If the priests are out numbered by the devils on either side of the river, they get killed and the game is over. You can try it in many > ways. Keep all priests alive! Good luck!

  • play the game ( http://www.flash-game.net/game/2535/priests-and-devils.html )

  • 列出游戏中提及的事物(Objects)

    老师好像对 牧师过河 这个游戏情有独钟,想起大一上的时候,也是潘老师任教的《软件工程导论》课,又一次的作业题目也是让我们分析这个游戏,转眼间两年过去了,又做到这个题目,竟然有种浓浓的不真实感。

    游戏中提及的事物如下:

    • 三个牧师、三个魔鬼
    • 两个河岸
    • 一艘小船
  • 用表格列出玩家动作表(规则表),注意,动作越少越好

    玩家动作动作条件
    船从岸的一侧开往另外一侧船上必须有一个牧师或者魔鬼
    游戏结束岸的任意一侧魔鬼数量大于牧师
    从左边上岸船的左边有人(魔鬼或者牧师)
    从右边上岸船的右边有人
  • 整个游戏仅 主摄像机 和 一个 Empty 对象, 其他对象必须代码动态生成 。整个游戏不许出现 Find 游戏对象, SendMessage 这类突破程序结构的通讯耦合语句,不接受非 MVC 结构程序。

    所谓 MVC结构框架 ,就是 模型(model)-视图(view)-控制器(controller) ,用一种业务逻辑、数据、界面显示分离的方法组织代码,这样更改UI界面的时候就不需要更改其他方面了。

最后我们实现的游戏如下图:
在这里插入图片描述
做完这个后……我觉得我回到了上 web2.0 的时代,开始慌了,不知道接下来还能不能活下来……

项目地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
Unity3D脚本编程游戏开发源码提供了一种有效的方式来创建令人兴奋的游戏。Unity3D是一款功能强大的游戏引擎,它允许开发者使用C#或JavaScript等脚本语言来编写游戏逻辑。 Unity3D脚本编程基于组件的设计模式。开发者可以在场景中添加各种组件,并使用脚本来控制它们的行为。例如,可以创建一个脚本来控制玩家角色的移动,另一个脚本来控制敌人的行为。这种模块化的设计使得开发过程更加灵活和可维护。 脚本编程也提供了一种可视化的方式来操纵游戏对象。Unity3D提供了一个强大的编辑器,开发者可以使用脚本来创建自定义的编辑器工具,这使得设计人员可以更轻松地进行游戏开发和调试。脚本编程还可以与其他功能强大的开发工具相结合,如动画和物理引擎,以创建更加逼真和令人印象深刻的游戏体验。 对于游戏开发源码来说,它是一种可供开发者学习和参考的资源。通过研究和了解游戏开发源码,开发者可以深入了解游戏开发的各个方面,包括游戏逻辑、资源管理、碰撞检测等。源码还可以帮助开发者提高编程设计技巧,并为他们提供创建自己游戏的灵感和指导。 总之,Unity3D脚本编程游戏开发源码提供了一种强大的工具和资源,帮助开发者创建令人兴奋和吸引人的游戏。它们对于游戏开发者来说是宝贵的资产,可以帮助他们实现创意,并创造出独一无二的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值