IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> ShootGame1(人物的移动和动画、相机的跟随) -> 正文阅读

[游戏开发]ShootGame1(人物的移动和动画、相机的跟随)

人物的移动:用刚体控制移动

声明角色移动的速度和刚体组件,用MovePosition()
让物体移动到新的位置position,恒速移动适用于频繁改变,推荐使用这种,较为平滑

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
? ? public float speed=6;//主角移动速度
? ? private Rigidbody rb;//刚体组件
? ? private float camLeagth = 100;//射线的长度
? ? private LayerMask floorMask;//地面的层级数
? ? //private int floorMask;
? ? private Animator anim;

? ? private void Awake()
? ? {
? ? ? ??
? ? }
? ? void Start()
? ? {
? ? ? ? rb = GetComponent<Rigidbody>();//获取刚体组件
? ? ? ? //floorMask =LayerMask.NameToLayer("Floor");
? ? ? ? floorMask = LayerMask.GetMask("Floor");
? ? ? ? anim = GetComponent<Animator>();//获取动画组件
? ? }

? ? // Update is called once per frame
? ? void Update()
? ? {
? ? ? ??
? ? }
? ? private void FixedUpdate()
? ? {
? ? ? ? PlayerMove();
? ? ? ? Turn();
? ? }
? ? //移动
? ? public void PlayerMove()
? ? {
? ? ? ?
? ? ? ? //左右移动
? ? ? ? float horizontal = Input.GetAxis("Horizontal");
? ? ? ? //前后移动
? ? ? ? float vertical = Input.GetAxis("Vertical");
? ? ? ? Vector3 movement = new Vector3(horizontal, 0, vertical);
? ? ? ?
? ? ? ? if(horizontal!=0||vertical!=0)
? ? ? ? {
? ? ? ? ? ? rb.MovePosition(transform.position + movement.normalized * speed * Time.deltaTime);
? ? ? ? ? ? anim.SetBool("moveing", true);//播放move动画
? ? ? ? }
? ? ? ? else?
? ? ? ? {
? ? ? ? ? ? anim.SetBool("moveing", false);//播放idle动画
? ? ? ? }
? ? ? ? //不用刚体控制移动
? ? ? ? //if(Input.GetKey(KeyCode.W))
? ? ? ? //{
? ? ? ? // ? ?transform.Translate(Vector3.forward);
? ? ? ? //}


? ? }
? ? //射线控制角色旋转的方向
? ? public void Turn()
? ? {
? ? ? ? //从主摄像机的原点向鼠标的位置上发送一条射线
? ? ? ? Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);
? ? ? ? RaycastHit hit;
? ? ? ? //如果射线检测成功
? ? ? ? if(Physics.Raycast(camRay,out hit,camLeagth,floorMask))
? ? ? ? {
? ? ? ? ? ? Debug.Log("射线");
? ? ? ? ? ? //根据鼠标位置进行转向
? ? ? ? ? ? Vector3 playerMouse = hit.point - transform.position;//向量计算
? ? ? ? ? ? rb.MoveRotation(Quaternion.LookRotation(playerMouse));
? ? ? ? ? ? //
? ? ? ? ? ? //transform.LookAt(hit.point);
? ? ? ? }
? ? }
}
?

相机的跟随:用Unity平滑函数Lerp

lerp主要有三个参数(常用)

lerp(初始状态 , 目标状态, OneExecutePer )

OneExecutePer:每一次执行靠近的度是多少(如果是1,就是说执行一次就会达到目标)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraMove : MonoBehaviour
{
? ? public Transform player;//主角
? ? Vector3 pos;
? ? private float smooth=3;//平滑值
? ? // Start is called before the first frame update
? ? void Start()
? ? {
? ? ? ??
? ? }

? ? // Update is called once per frame
? ? void Update()
? ? {
? ? ? ? pos.x = player.position.x + 1;
? ? ? ? pos.y = player.position.y + 5;
? ? ? ? pos.z = player.position.z - 5;
? ? ? ? //transform.position = pos;//没有平滑
? ? ? ? transform.position = Vector3.Lerp(transform.position, pos, smooth * Time.deltaTime);
? ? }
}
?

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:31:34  更:2022-10-31 12:32:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/17 6:13:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码