江西旅游网站建设方案,wordpress更换域名缩略图不显示,网站建设狼雨,linode vps wordpress目录
第一人称角色控制
#x1f634;1、准备工作
#x1f4fa;2、鼠标控制摄像机视角
#x1f3ae;3、角色控制
#x1f603;4.杂谈 第一人称角色控制
专栏Unity之动画和角色控制-CSDN博客的这一篇也有讲到角色控制器#xff0c;是第三人称视角的#xff0c;以小编…目录
第一人称角色控制
1、准备工作
2、鼠标控制摄像机视角
3、角色控制
4.杂谈 第一人称角色控制
专栏Unity之动画和角色控制-CSDN博客的这一篇也有讲到角色控制器是第三人称视角的以小编目前掌握的Unity知识来看第一人称和第三人称只不过是摄像机摆放的位置不同而已。 最开始学Unity的时候小编最想实现的就是角色控制这一功能通过近一步学习鼠标晃动就可以实现视角的旋转也可以通过跳跃跳到石头上去我们一起来看。 下面我们来实现这一实例。
1、准备工作
先把我们的场景导入进来 Low-Poly Simple Nature Pack,资源商店免费的资源。然后打开下图框中的文件就是我们要用到的场景了。 实例我们还是用胶囊来代表玩家新建一个胶囊Player把摄像机移动到玩家第一人称的位置。并把摄像机放到Player下面形成一个整体 2、鼠标控制摄像机视角
准备工作做好后进入正题编写鼠标控制视角的脚本并挂载到摄像机上
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FPSCamera : MonoBehaviour
{//获取玩家位置信息public Transform player;//获取鼠标移动的值private float mouseX, mouseY;//鼠标增加灵敏度public float mouseSensitivity;private float xRotation;private void Update(){//获取鼠标上下、左右移动的值mouseX Input.GetAxis(Mouse X) * mouseSensitivity * Time.deltaTime;mouseY Input.GetAxis(Mouse Y) * mouseSensitivity * Time.deltaTime;xRotation - mouseY;xRotation Mathf.Clamp(xRotation, -70f, 70f); //限制鼠标上下旋转范围player.Rotate(Vector3.up * mouseX);//相机上下旋转transform.localRotation Quaternion.Euler(xRotation,0,0);}
}这样鼠标控制视角旋转就实现了。
3、角色控制
我们删除胶囊本身的碰撞器组件CapsuleCollider,挂载角色控制组件CharacterController并新建实现移动的脚本挂载到Player中。
创建一个空对象GroundCheck把它放到Player最底部位置这里用空对象来检测与地面的碰撞。 给地面设置图层Ground 编写实现Player角色控制脚本
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;//给玩家挂载 Character Controller 组件
public class FPSMove : MonoBehaviour
{private CharacterController cc;//移动速度public float moveSpeed;//跳跃速度public float jumpSpeed;//定义获得按键值的两个变量private float horizontalMove, verticalMove;private Vector3 dir;//手动实现重力public float gravity;private Vector3 velocity;//创建空对象放到玩家最底部用来检测碰没碰到地面把空对象挂上来//检测点的中心位置public Transform groundCheck; //检测点的半径public float checkRadius;//需要检测的图层public LayerMask groundLayer;//布尔值存储Physics.CheckSphere的返回值,判断是否与地面发生碰撞public bool isGround;private void Start(){ //获取玩家挂载的角色控制组件cc GetComponentCharacterController();}private void Update(){//检测玩家是否在地面上如果定义的球体和物体发生碰撞返回trueisGround Physics.CheckSphere(groundCheck.position, checkRadius, groundLayer);if (isGround velocity.y 0){velocity.y -2f;}//获得移动按键的值horizontalMove Input.GetAxis(Horizontal) * moveSpeed;verticalMove Input.GetAxis(Vertical) * moveSpeed;dir transform.forward * verticalMove transform.right * horizontalMove;//实现移动cc.Move(dir * Time.deltaTime);//每秒减去重力的值不断下降,手动实现重力velocity.y - gravity * Time.deltaTime;cc.Move(velocity * Time.deltaTime);//判断是否按下跳跃键if (Input.GetButtonDown(Jump) isGround) {//给玩家一个向上的速度velocity.y jumpSpeed;}}
}
把空对象的值赋到groundCheck中检测碰撞的图层换为Ground并根据自己的喜好调整移动速度等参数值这样我们的第一人称角色控制就实现了。 小编还复习了初中重力物理公式doge.jpgGmg。其中g是重力加速度通常g取9.8小编这里给10 4.杂谈
跟着飞羽老师学完基础部分感觉依然有好多知识如果想实现某一功能的话可以进行针对性的学习。这篇第一人称角色控制就是这样好在网上资料很多。
顺便想一下角色控制有了动画的使用也有所了解像Unity之动画和角色控制-CSDN博客把它们结合到一起就可以实现移动的同时又做出相应的动作又有好玩的了。 小编改了一下点击鼠标释放技能播放挥手动画和技能特效把跳跃和动画也加到实例中《绿洲大镖客之重生我是闪电侠》v0.2(doge.jpg) 本篇内容就先讲到这里拜拜┏(0)┛