版本:unity3D-2018
控制物体运动
一、cube和plane创建
1、创建
在【Hierarchy】界面空白处点击右键——>【3D object】——>【cube】/【plane】
2、调整cube和plane
①将cube和plane位置归零
②调整平面大小、cube的高低
cube默认边长为1,重新设定cube坐标为(0,0,0)后,cube的几何中心到了(0,0,0),底边在-0.5高度,所以把y设置为0.5,此时cube位于水平面上
3、调整camera
4、球体染色
①在【Assets】下创建新的文件夹,取名为:material
②在刚刚创建的material文件下创建一个Material文件,取名为red
③选中red文件,设置颜色为红色
④拖动红色球给cube上色
5、cube加一个头
为了更好的显示方向,在【cube】上添加一个球体(或者空白处创建后将球体文件拖到cube文件下)
染成红色
将球体拖动的如图位置:(注意Z轴方向是前进方向)
6、添加Rigidbody组件(后面程序的跳跃用到)
二、代码创建
1、创建C#文件
在scene下创建文件夹,取名可以是Scripts(随便)
在刚刚创建的文件夹下创建一个C#文件,可以取名为move
2、程序挂载
先挂载后编辑C#代码,方便中途调试
挂载的目的是让程序知道,哪个物体在执行本程序
操作:
点击选中【cube】,将C#文件拖到右边
注意C#文件名要和程序中的类名一致。
3、编辑程序
点击打开【move】C#代码文件,如果没有VS等编辑器,选择txt文件、word等都可以。
打开后代码显示:
前三行是引用系统的文件和引擎
Start()放置一些配置代码,比如物体运动速度、转动角度等,程序执行一次。在Update()中是要循环执行的东西,比如获取按键等操作。这有点类似arduino IDE的setup()和loop();
复制下面代码到文件中:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
private Transform TransformThis;
private Rigidbody Rigidbody_this;
public float movespeed = 5f;//物体运动速度
public float rotatespeed = 2f;//转动速度,控制物体转向
public float F = 300;
void Start()
{
TransformThis = this.GetComponent<Transform>();//获得物体的transform属性栏
Rigidbody_this = this.GetComponent<Rigidbody>();//获得物体的rigidbody属性栏
}
void Update()
{
float v = Input.GetAxis("Vertical");//纵轴
float h = Input.GetAxis("Horizontal");//横轴
TransformThis.Translate(new Vector3(0, 0, 1) * movespeed * Time.deltaTime * v);
TransformThis.Rotate(new Vector3(0, 1, 0), h * rotatespeed);//转向
if (Input.GetKeyDown(KeyCode.Space))//按下才触发,与Input.GetKey()区分
{
Rigidbody_this.AddForce(new Vector3(0, 1, 0) * F);
}
}
}
点击保存后,返回unity。点击C#文件后,右侧处理代码显示
三、调试
1、运行
程序保存后返回unity,自动编译程序,程序编译无误后点击运行
键盘(w、s、a、d)或者(↑、↓、←、→)控制方向,空格控制跳跃,运行效果如下:
2、摄像头跟随
将【Main Camera】拖到【Cube】中
看一下效果:
3、导入背景图
直接拖动图片到【Assets】
再拖动图片到plane
随便找的一张图,效果不好:
或者右键点击【Assets】——>【import New Asset】
选择文件夹内图片并确定
拉近摄像头,看一下效果: