学习unity已经有一段时间了,我打算自己做cs的项目来巩固和提高自己。
第一步:构建场景
由于该游戏只侧重于游戏逻辑,因此要构建场景和人物素材,请从unity asset store的免费资源下载。 所以,先找场景。
在这个unity提供的免费场景中
场景是这样的
上面的场景禁用了一些特效。
我接下来再去找一把枪
导入这把枪的素材,从块中选择一把。
请注意从场景中移除相机。 自己添加照相机,调整照相机和枪的位置。 可能是下图的位置
把照相机拖到枪里形成子物体和母物体。 目的是为了让照相机追随枪的运动而移动。
请注意把枪放在空物体里。 否则,材料的自身坐标会导致移动和旋转成为问题。
接下来先写移动脚本。
新建c#类,MovePlayer.cs
用Input系统控制鼠标左右移动、枪旋转、键盘awsd或人物移动。
using System.Collections;
using system.collections.generic;
用户单元引擎;
///summary
//
////summary
publicclassmoveplayer : mono behaviour
{
//左右移动键盘
私有浮动水平;
//键盘上下键移动
私密浮动垂直;
//鼠标的x轴移动(相对于画面) ) ) ) ) ) )。
私有浮动模块;
//鼠标y轴移动(相对于屏幕)注:屏幕上没有z轴,因此没有鼠标z轴移动的输入
隐私浮动模块;
//移动速度
公共浮动移动=10;
//转速
公共浮动旋转速度=50;
//startiscalledbeforethefirstframeupdate
void Start () )
{
}
//Update is called once per frame
void更新() )
{
//键盘上的ad键和左右移动键左:-1右: 1
horizontal=input.getaxis (horizontal );
//键盘上的ws键和键上下移动
vertical=input.getaxis (vertical );
//移动鼠标控制旋转
mousex=input.getaxis(mousex );
mousey=input.getaxis(mousey );
//移动键盘的ad键相对于三维坐标系的x轴,ws相对于z轴
this.transform.translate (horizontal * time.delta time * movespeed,0,vertical * time.delta time * movesped );
//旋转鼠标的左右移动沿3位坐标的y轴旋转,鼠标的上下沿x轴旋转()鼠标上为正值,但旋转为逆时针旋转,因此注意x轴的旋转向负方向旋转() ) )。
//y轴沿着世界坐标
this.transform.rotate (0* time.delta time,mousex * rotatespeed * time.delta time,0,Space.World );
//x轴沿着自身
this.transform.rotate (-mousey * rotatespeed * time.delta time,0,0 );
打印(水平)水平;
打印(垂直)垂直;
}
}
以上代码通过控制物体的旋转,制造人物很复杂,所以简单地制造枪。
控制枪支移动需要注意两点
1请注意,枪的旋转沿y轴旋转是沿世界旋转,而沿x轴旋转是沿自身旋转。 (自己用身体转动就知道了,如果都是沿着同一条线的话,需要固定脖子,会导致旋转昏厥。 ) ) ) ) ) ) ) ) ) ) )。
沿2x轴旋转input可获得正值,向上旋转则x轴逆时针旋转,因此必须沿负方向旋转。
现在,本章已经写到这里,下一章将碰撞组件和刚体添加到枪中,以防止枪飞出地图。