这一篇不错,解决了我一个一直忽略的问题

上一章介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得Unity3D 这套游戏引擎真的很棒,它可以为开发者节省时间。用更多少的脚本,可以实现更多的功能。先赞一下,哇咔咔~废话不多说了,入正题!
首先在3D世界中创建一个箱子模型,然后添加一个脚本,命名为  js0绑定到这个箱子中。在添加一个脚本,命名为js1 ,同样绑定到这个箱子上,用来实现对象的创建与调用方法参数的传递 ~
var Control;   这里声明一个控制类的对象,用来进行参数的传递,调用方法。
Getomponent(js1): 得到脚本名称为js1的对象,这里把值赋给Control,就可以使用js1脚本中的方法了,下面的代码中通过这个对象调用模型的移动方法。
Input.GetKey(KeyCode): 这个方法返回一个Bool 判断当前按键是否被按下,当然这里只能运行在PC上才可以感应按钮,因为IOS的设备上没有按键,以后我会介绍在IOS上添加游戏摇杆的功能,本章我们先学习一下PC上的基本按钮响应。
下面代码
实现按下“W”控制物体向前
实现按下“S”控制物体向后
实现按下“A”控制物体向左平移
实现按下“D”控制物体向右平移
实现按下“Q”控制物体向左旋转
实现按下“E”控制物体向右旋转
js0.js 代码
01 //旋转移动速度
02 var Speed = 50;
03  
04 //控制对象
05 var Control;
06  
07 function Update()
08 {
09   //得到控制对象
10   Control = GetComponent(js1);
11  
12   //判断按键
13  
14   if(Input.GetKey(KeyCode.W))
15   {
16         //前进
17         Control.ForWard();
18  
19   }else if(Input.GetKey(KeyCode.S))
20   {
21         //后退
22         Control.Back();
23   }
24  
25     if(Input.GetKey(KeyCode.A))
26   {
27         //前左
28         Control.GLeft();
29  
30   }else if(Input.GetKey(KeyCode.D))
31   {
32         //后右
33         Control.GRight();
34   }
35  
36   if(Input.GetKey(KeyCode.Q))
37   {
38     //左旋转
39  
40     Control.leftRotate(Vector3.up *Time.deltaTime * -Speed);
41  
42   }else if(Input.GetKey(KeyCode.E))
43   {
44     //右旋转
45     Control.RightRotate(Vector3.up *Time.deltaTime * Speed);
46  
47   }
48  
49 }

js1.js 代码

参数的传递可以使用obj进行传递,代码中我将旋转的角度做为参数传递到了js1.js中控制模型旋转。
Vector3 标示一个3D的向量单位,它可以标示模型的三个方向,这里根据旋转的角度与移动的向量设置它。
01 //前进速度
02 var Speed = 50;
03  
04 //前进
05 function ForWard()
06 {
07     transform.Translate(Vector3.forward * Time.deltaTime *Speed);
08 }
09  
10 //后退
11 function Back()
12 {
13     transform.Translate(Vector3.forward * Time.deltaTime * -Speed);    
14 }
15  
16 //向左
17 function GLeft()
18 {
19     transform.Translate(Vector3.right * Time.deltaTime *-Speed);
20 }
21  
22 //向右
23 function GRight()
24 {
25     transform.Translate(Vector3.right * Time.deltaTime * Speed);       
26 }
27  
28 //传递参数
29  
30 //左旋转
31 function leftRotate(obj)
32 {
33     transform.Rotate(obj); 
34 }
35  
36 //右旋转
37 function RightRotate(obj)
38 {
39     transform.Rotate(obj); 
40 }

OK点击运行,通过按键我们可以正常的控制模型平移与旋转,但是现在有两个问题 1, 主摄像机不能跟随控制模型, 2  、模型可以横穿过山丘,感觉很假。下面我们解决这两个问题。


在Unity3D标准资源的脚本中系统帮我们写好了跟随脚本.如下图所示,点击Import Package – > Scripts 将系统脚本导入。
选中摄像机 点击Component – > Camera-Control – > Smoot Follow ,给主摄像机添加一个跟随脚本。
跟随脚本添加完以后,须要指定一个跟随的物体,下面红框内将跟随的物体Cube拖动进来,这里Cube就是我们上面控制的模型,那么这样,摄像机将会一直在身后跟随我们控制的模型。下面是一些跟随的参数,设置 跟随的距离 高度等等,盆友们手动的修改一下运行游戏就可以看出来变化,。
控制物体的碰撞可以使用 选中模型, Component – > Physics – > Rigidbody 设置这个模型的重力碰撞。那么这样你控制的模型就不会穿过山丘,而是感应重力碰撞。
点击运行游戏,看看效果,控制箱子行走的同时,我们可以清晰的看出旁边的树木被物理碰撞所干扰,前后,左右,旋转 完全OK .大家快试试吧。哇咔咔~~
明天开始MOMO又要开始处理一部分iPhone 的界面图形化开发,Tomorrow is another day ,加油哇咔咔~ Unity3D 的世界中脚本还可以做很多事情,以后我在慢慢向各位道来~ 欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,哇咔咔~~~

Unity3D研究院之控制模型移动旋转与碰撞(七)相关推荐

  1. 【虚拟仿真】Unity3D中实现控制物体的旋转、移动、缩放

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦. 一.前言 ...

  2. Unity3D研究院之FBX模型的载入与人物行走动画的播放(十二)

     3D 世界中自定义模型的使用恐怕是重中之重,因为系统自身提供的模型肯定是无法满足GD对游戏的策划,所以为了让游戏更加绚丽,我们须要调用美术制作的精品模型与动画,本章MOMO将带领盆友们学习Unity ...

  3. unity3d鼠标拖拽模型,旋转模型

    直接挂载到模型上 using UnityEngine; using System.Collections;public class OnDrag : MonoBehaviour {//目标物体publ ...

  4. 002-实现Unity3d中触摸屏幕控制物体的旋转和缩放 代码实现

    1.直接帮到物体的身上就可以了 using UnityEngine; using System.Collections; using System.IO; public class hehe : Mo ...

  5. unity 3D模型展示旋转缩放

    目标: 在UI层上 自由观察3D 模型,实现鼠标控制模型的旋转,缩放&& 触摸屏手势控制模型的旋转缩放控制: 这里仅将控制代码挂载到相机上,通过对相机的控制来观察模型. 基本上为最小单 ...

  6. 基于超螺旋滑模观测器的内置式永磁同步电机ipmsm无位置(速度)传感器控制模型

    基于超螺旋滑模观测器的内置式永磁同步电机ipmsm无位置(速度)传感器控制模型 dq旋转坐标系建立滑模观测器 引入二阶滑模超螺旋算法替代一阶滑模 引入锁相环PLL估计转速及转子位置id=6509656 ...

  7. Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放

    前几篇文章介绍了很多Unity3D引擎自身的一些问题, 今天我们在回到IOS设备上讨论一些触摸屏幕手势,本章的目标是通过触摸iPhone屏幕手势 实现模型左右的旋转,与模型的缩放. 大家想一想模型的旋 ...

  8. Unity3D研究院之鼠标控制角色移动与奔跑示例

    最新补充.          一般在做鼠标选择时是从摄像机向目标点发送一条射线,然后取得射线与对象相交的点来计算3D目标点.后来在开发中发现了一个问题(射线被别的对象挡住了),就是如果主角的前面有别的 ...

  9. (8)VTK 鼠标左右键控制模型旋转

    1. 前言 在一个项目中,需要用鼠标和键盘完成对模型旋转操作和移动操作. 实现中,对鼠标的操作虚函数进行了重写,完成左右键点击,对模型正负方向旋转. 2.代码 #include "InitI ...

最新文章

  1. 免费丨AI内行盛会!2021北京智源大会带你与图灵奖和200+位大牛一起共话AI
  2. php5.5 反序列化利用工具_记一次Spring Devtools反序列化利用
  3. mysql 5.6 root密码_MySQL 5.6 root 初始密码
  4. 实验吧_NSCTF web200FALSE(代码审计)
  5. 开启未来十年的编码技术之门
  6. VM虚拟机中 localhost login_UTM 2.0 虚拟机来了,解决上网和无声音问题
  7. leetcode - 221. 最大正方形
  8. SQLi LABS Less-3 联合注入+报错注入
  9. ftp服务器多用文件夹权限,自己动手搭建隔离用户的FTP服务器之权限分配(二)...
  10. 企业启动计划预算管理的原因解析
  11. 深圳php程序培训班,深圳php编程培训班哪几个好
  12. 12306排队是什么意思_12306火车网上订票排队是什么意思
  13. 向flume发送消息出现Client sent event exceeding the maximum length
  14. 【阿里云】处理Centos7里面的阿里云盾
  15. 资深项目经理2019年总结
  16. js正则表达式检测邮箱地址是否正确
  17. 2020年计算机双非保研经历分享(2021届)
  18. 【“BattenSnakexjp4.1”数据结构课程设计报告】
  19. Netty5的例子,简单介绍Netty的用法
  20. 捷联惯导系统学习7.5(低成本组合导航系统模型)

热门文章

  1. WIN7开始菜单添加程序快捷方式
  2. AI论文系列-经典论文[原文、中文翻译、中英文对照翻译]
  3. 真诚的心 忽悠的本事
  4. MAC地址表及邻居信息查看;配置接口速率及双工模式;配置交换机管理IP
  5. 【期末网页设计】基于HTML学生信息管理系统网页项目的设计与实现
  6. 往事如烟一些人一些事过去了就让他过去吧
  7. 乱象丛生的IDC行业,冒然闯入必将铩羽而归
  8. ChatGPT真的在和我们“聊天”吗?
  9. iOS的Keychain可以实现App间的数据共享
  10. hjson的使用,一个配置文件神器