Roll a Ball 游戏教程学习笔记(一)初始设置
2018-01-30 19:28
176 查看
在为场景添加东西之前,先保存场景。保存场景可以再file-->save sence保存到Assets文件夹下,新建名为_Sence文件夹,场景名字为MiniGame
新建plane,重命名Ground。使用transform的下拉菜单重设(reset)变换组件,讲对象放置在场景中间。选中场景物体按住F键或者在edit菜单中的frame selected。将摄像机对准整个场景。取消网格线,在gizmos中取消选中show grid。
改变plane大小,在transform中改数字,tab键,在x,y,z中变换。plane没有体积,y轴正向无效,负向就是向下显示,向下显示时,在正面看不到。如果设置一个plane,但是没看到plane,要检查plane的y轴和摄像机
创建一个小球,放到原点(reset),在edit菜单中的frame selected或者鼠标放在场景中按住F让摄像机聚焦在小球上,将球移到平面上
给背景加颜色,想要给模型(model)添加颜色或者纹理(texture),要用到材质(material)。在项目中新建一个文件夹Materials用于放置材质,然后在这个文件夹里创建材质background,选择background,看inspector中的main maps,第一个属性是albido,改颜色。给plane弄上这个贴图需要选中项目中的视图中的材质,然后拖拽到场景视图的平面plane上。要预览材质的话要确保预览窗口是打开的,预览窗口在inspector最下面。
旋转主光源,选中directional light,然后改变transform组件中rotation属性的Y值,改成为倾斜角45度。
改变名字,双击物品(中间停格一下)
想要小球滚动装在墙上不飞出去,希望收集一些可以收集的物品。这个时候需要物理系统,需要游戏对象和刚体组件关联,要关联一个新的组件,需要先选中要关联的游戏对象。然后component-->physics-->rigid body这样就能关联到选中的游戏对象,使物体拥有刚体组件。
要玩家对象在控制下移动,获取玩家的键盘输入,并把这些输入装换成对球的作用力。要写一个脚本,首先在project中新建一个文件夹scripts用于存放脚本,然后新建C#脚本。选中对象,在Add Component中增加new script,脚本命名为PlayerControl。这种新建脚本的方法会把脚本生成在项目视图的根目录下。
打开代码,删除示例代码。
我们想每一帧都检测用户的输入,然后将每一帧的输入都作用与游戏对象上。那么。在哪检测输入呢?两种方法
update,fixed update):
update在每一帧展示之前被调用,而fixed update是在进行任何物理计算之前被调用。物理代码在这里执行。
我们需要知道input,但如何知道更多呢?
Input.GetAxis 获取轴:GetAxis 是个方法,需要传参数,参数为string类型,参数如下:
一:触屏类
1.Mouse X 鼠标沿着屏幕X移动时触发
2.Mouse Y 鼠标沿着屏幕Y移动时触发
3.Mouse ScrollWheel 当鼠标滚动轮滚动时触发
二:键盘操作类
1.Vertical 对应键盘上面的上下箭头,当按下上或下箭头时触发
2.Horizontal 对应键盘上面的左右箭头,当按下左或右箭头时触发
// A very simplistic car driving on the x-z plane.
// 一个十分简单的在x-z平面的驾车例子
var speed : float = 10.0;
var rotationSpeed : float = 100.0;
function Update () {
// Get the horizontal and vertical axis.
//获取横向和纵向坐标轴
// By default they are mapped to the arrow keys.
//默认情况下他们关联到方向键上
// The value is in the range -1 to 1
//值的范围是在-1到1之间
var translation : float = Input.GetAxis ("Vertical") * speed;
var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;
// Make it move 10 meters per second instead of 10 meters per frame...
// 使它每帧移动10米变为每秒移动10米...
translation *= Time.deltaTime;
rotation *= Time.deltaTime;
// Move translation along the object's z-axis
//沿着z轴平移对象
transform.Translate (0, 0, translation);
// Rotate around our y-axis
//以我们的y轴为中心旋转
transform.Rotate (0, rotation, 0);
}
Rigidbody.AddForce 添加力:添加一个力到刚体。作为结果刚体将开始移动
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
public float thrust;
public Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
rb.AddForce(transform.forward * thrust);
}
}
如何让对象引用不同的组件?
新建plane,重命名Ground。使用transform的下拉菜单重设(reset)变换组件,讲对象放置在场景中间。选中场景物体按住F键或者在edit菜单中的frame selected。将摄像机对准整个场景。取消网格线,在gizmos中取消选中show grid。
改变plane大小,在transform中改数字,tab键,在x,y,z中变换。plane没有体积,y轴正向无效,负向就是向下显示,向下显示时,在正面看不到。如果设置一个plane,但是没看到plane,要检查plane的y轴和摄像机
创建一个小球,放到原点(reset),在edit菜单中的frame selected或者鼠标放在场景中按住F让摄像机聚焦在小球上,将球移到平面上
给背景加颜色,想要给模型(model)添加颜色或者纹理(texture),要用到材质(material)。在项目中新建一个文件夹Materials用于放置材质,然后在这个文件夹里创建材质background,选择background,看inspector中的main maps,第一个属性是albido,改颜色。给plane弄上这个贴图需要选中项目中的视图中的材质,然后拖拽到场景视图的平面plane上。要预览材质的话要确保预览窗口是打开的,预览窗口在inspector最下面。
旋转主光源,选中directional light,然后改变transform组件中rotation属性的Y值,改成为倾斜角45度。
改变名字,双击物品(中间停格一下)
想要小球滚动装在墙上不飞出去,希望收集一些可以收集的物品。这个时候需要物理系统,需要游戏对象和刚体组件关联,要关联一个新的组件,需要先选中要关联的游戏对象。然后component-->physics-->rigid body这样就能关联到选中的游戏对象,使物体拥有刚体组件。
要玩家对象在控制下移动,获取玩家的键盘输入,并把这些输入装换成对球的作用力。要写一个脚本,首先在project中新建一个文件夹scripts用于存放脚本,然后新建C#脚本。选中对象,在Add Component中增加new script,脚本命名为PlayerControl。这种新建脚本的方法会把脚本生成在项目视图的根目录下。
打开代码,删除示例代码。
我们想每一帧都检测用户的输入,然后将每一帧的输入都作用与游戏对象上。那么。在哪检测输入呢?两种方法
update,fixed update):
update在每一帧展示之前被调用,而fixed update是在进行任何物理计算之前被调用。物理代码在这里执行。
我们需要知道input,但如何知道更多呢?
Input.GetAxis 获取轴:GetAxis 是个方法,需要传参数,参数为string类型,参数如下:
一:触屏类
1.Mouse X 鼠标沿着屏幕X移动时触发
2.Mouse Y 鼠标沿着屏幕Y移动时触发
3.Mouse ScrollWheel 当鼠标滚动轮滚动时触发
二:键盘操作类
1.Vertical 对应键盘上面的上下箭头,当按下上或下箭头时触发
2.Horizontal 对应键盘上面的左右箭头,当按下左或右箭头时触发
// A very simplistic car driving on the x-z plane.
// 一个十分简单的在x-z平面的驾车例子
var speed : float = 10.0;
var rotationSpeed : float = 100.0;
function Update () {
// Get the horizontal and vertical axis.
//获取横向和纵向坐标轴
// By default they are mapped to the arrow keys.
//默认情况下他们关联到方向键上
// The value is in the range -1 to 1
//值的范围是在-1到1之间
var translation : float = Input.GetAxis ("Vertical") * speed;
var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;
// Make it move 10 meters per second instead of 10 meters per frame...
// 使它每帧移动10米变为每秒移动10米...
translation *= Time.deltaTime;
rotation *= Time.deltaTime;
// Move translation along the object's z-axis
//沿着z轴平移对象
transform.Translate (0, 0, translation);
// Rotate around our y-axis
//以我们的y轴为中心旋转
transform.Rotate (0, rotation, 0);
}
Rigidbody.AddForce 添加力:添加一个力到刚体。作为结果刚体将开始移动
using UnityEngine;
public class ExampleClass : MonoBehaviour
{
public float thrust;
public Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
rb.AddForce(transform.forward * thrust);
}
}
如何让对象引用不同的组件?
相关文章推荐
- Roll-a-Ball教程学习笔记(未整理)
- flash学习笔记:网页游戏老板键的设置。
- STM32学习笔记 - 串口的初始设置
- [Matlab]基础教程学习笔记(一):基础和设置和矩阵教程
- Unity 3D 官方教程—— Roll A Ball 学习记录
- 学习笔记-【Quick-Cocos2d-x初学者游戏教程】
- Unity官方实例教程 Roll-a-Ball 学习笔记
- Unity官方游戏实例视频中文教程之太空射击学习笔记
- Unity官方实例教程 Roll-a-Ball 学习笔记(一)+(二)
- 孔浩老师 jUnit 视频教程学习笔记(第1讲)
- cocos2dx游戏开发——捕鱼达人mini版学习笔记(二)——MainMenu的搭建
- LINUX学习笔记——DNS服务器设置篇(转载)
- Space Shoot教程学习笔记
- MTM动画教程学习笔记1【第五章 速度和加速度】
- loadrunner学习笔记之参数设置
- 【Cocos2d-html5游戏引擎学习笔记(10)】自定义精灵动画
- 传智播客Hibernate视频教程学习笔记38
- CUBRID学习笔记 34 net参数化查询 cubrid教程示例
- cocos2dx游戏开发学习笔记2-从helloworld开始
- 传智播客Hibernate视频教程学习笔记54