失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)

unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)

时间:2022-04-26 03:03:11

相关推荐

unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)

学习unity有一段时间了,自己准备做一个cs的项目来巩固并且提升自己。

第一步:搭建场景

因为这个游戏只针对游戏逻辑为重点,所以搭建场景和人物素材我都从unity asset store中的免费资源下载:所以先找一个场景。

就用这个unity提供的免费的场景把

场景大概是这个样子的

上面的场景我将一些特效给禁用掉了。

接下来再去找一把枪

将这个枪的素材导入,在预制件中选择一把。

注意把场景中的摄像机去掉,我们自己加一个摄像机并且调整摄像机和枪的位置。大概是下图的位置

将摄像机拖拽到枪的中形成子物体和父物体。目的是为了摄像机跟随枪移动而移动。

注意将枪放入一个空物体中,否则由于素材的自身坐标会导致移动和旋转出问题。

接下来先写移动脚本。

新建一个c#类,MovePlayer.cs

用Input类实现鼠标左右移动,枪旋转,键盘的awsd或者↑↓←→控制人物移动。

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

/// <summary>

///

///</summary>

public class MovePlayer : MonoBehaviour

{

//键盘左右移动

private float Horizontal;

//键盘上下键移动

private float Vertical;

//鼠标x轴移动(相对屏幕而言)

private float MouseX;

//鼠标y轴移动(相对屏幕而言) 注:屏幕没有z轴所以没有鼠标z轴移动的input

private float MouseY;

//移动速度

public float moveSpeed = 10;

//旋转速度

public float rotateSpeed = 50;

// Start is called before the first frame update

void Start()

{

}

// Update is called once per frame

void Update()

{

//键盘的ad键和←→键左右移动 左:-1 右:1

Horizontal=Input.GetAxis("Horizontal");

//键盘的ws键和↑↓键上下移动

Vertical= Input.GetAxis("Vertical");

//鼠标移动来控制旋转

MouseX = Input.GetAxis("Mouse X");

MouseY = Input.GetAxis("Mouse Y");

//移动 键盘ad键相对于三维坐标系的x轴,ws相对于z轴

this.transform.Translate(Horizontal * Time.deltaTime*moveSpeed,0, Vertical * Time.deltaTime * moveSpeed);

//旋转 鼠标的左右移相对于三位坐标的沿y轴旋转,鼠标的上下相对于沿着x轴旋转(注意鼠标向上是一个正值但是旋转是逆时针旋转所以x轴旋转要旋转负方向)

//y轴要沿着世界坐标

this.transform.Rotate(0* Time.deltaTime, MouseX*rotateSpeed*Time.deltaTime, 0,Space.World);

//x轴要沿着自身

this.transform.Rotate(-MouseY * rotateSpeed * Time.deltaTime, 0, 0);

print("Horizontal" + Horizontal);

print("Vertical" + Vertical);

}

}

以上代码就是控制物体旋转,由于做人物比较复杂,所以就单纯做一把枪。

控制枪移动 需要注意2点

1 枪旋转要注意 沿y轴旋转要沿着世界旋转,x轴旋转要沿着自身(自己用身体转一下就明白了,如果都沿着同一的话你需要固定主脖子,旋转会很晕)

2 沿着x轴旋转 input获取的是正值向上旋转是x轴逆时针旋转,所以需要负方向旋转。

好了本章就写道这里,下一章给枪添加碰撞组件和刚体防止枪冲出地图。

如果觉得《unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。