大型物流公司网站,给企业做网站的业务员,网络安全,品牌建设需打持久战#x1f468;#x1f4bb;个人主页#xff1a;元宇宙-秩沅
#x1f468;#x1f4bb; hallo 欢迎 点赞#x1f44d; 收藏⭐ 留言#x1f4dd; 加关注✅!
#x1f468;#x1f4bb; 本文由 秩沅 原创
#x1f468;#x1f4bb; 收录于专栏#xff1a;Uni… 个人主页元宇宙-秩沅
hallo 欢迎 点赞 收藏⭐ 留言 加关注✅!
本文由 秩沅 原创
收录于专栏Unity基础实战
⭐️⭐ 文章目录 ⭐️⭐⭐前言⭐1 角色控制器Character Contorller主要参数 2 角色控制器Character Contorller的实践 ⭐️⭐ ⭐前言⭐ 在Unity中角色控制器Character Controller是一个用于控制角色移动和碰撞的组件。它是一种不依赖于物理引擎的方式来控制角色的移动因此可以提供更加灵活和精确的控制。 角色控制器主要用于第三人称游戏中的角色移动如角色的行走、奔跑、跳跃等。它通过使用简单的函数来实现角色的移动包括Move()函数用于移动角色SimpleMove()函数用于施加重力。 另外角色控制器还提供了一些相关的属性和函数用于控制角色与其他物体的碰撞检测和响应。例如可以使用isGrounded属性来检测角色是否接触到地面使用Move()函数来推动角色并与其他物体发生碰撞。 需要注意的是角色控制器是一种比较简单的移动方式适用于一些简单的角色移动需求。对于复杂的物理碰撞和运动效果可以使用Rigidbody组件来实现。 角色控制器是让角色可以受制于碰撞但是不会被刚体所牵制,角色控制器会让角色表现的更加稳定,排除可能因为刚体出现的在斜坡上自己滑动或者被撞飞 Unity提供了角色控制器脚本专门用于控制角色 添加后 无需再添加刚体 能检测碰撞函数 能检测触发器函数 能被射线检测 1 角色控制器Character Contorller主要参数 1.是否接触地面——isGrounded();2.受重力移动 —— SimpleMove();3.不受重力移动——Move();4.碰撞器检测函数——OnControllerColliderHit(ControllerColliderHit hit)
1.取消Animator组件中的允许位移的功能勾选 加入角色控制器之前——不随镜头向前移动上帝视角 rigidbody.MovePosition( transform.localPosition moveDerictor * velocity * Time.deltaTime); //速度*方向 向量 加入角色控制器之后——可以跟随镜头而向前移动第一人称视角 player.SimpleMove( transform.forward moveDerictor*velocity *Time.deltaTime ); 2 角色控制器Character Contorller的实践 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目: ______________
//___________功能 玩家的移动
//___________创建者___秩沅____
//_____________________________________
//-------------------------------------
public class PlayerMove : MonoBehaviour
{private float vertical;private float horizontal;private float mousePosition;private CharacterController player; //角色控制器private Vector3 moveDerictor; //移动的方向public float velocity 2f; //移动的速度public float roVelocity 10f;private Animator playerAnimatior;private void Awake(){player GetComponentCharacterController();playerAnimatior GetComponentAnimator();}private void FixedUpdate(){vertical Input.GetAxis(Vertical) ;horizontal - Input.GetAxis(Horizontal) ;mousePosition Input.GetAxis(Mouse X);//旋转transform.localRotation * Quaternion.Euler(0, mousePosition * roVelocity, 0);if (vertical ! 0 ||horizontal ! 0){ //移动playerAnimatior.SetFloat(SpeedWS, (int)vertical);playerAnimatior.SetFloat(SpeedAD, (int)horizontal);moveDerictor new Vector3(vertical, 0, horizontal);print(moveDerictor.normalized);/// moveDerictor moveDerictor.normalized; //将方向变成单位向量//transform.position transform.position moveDerictor.normalized*Time .deltaTime ;player.SimpleMove(transform.forward * vertical );player.SimpleMove(transform.right * -horizontal);//GetComponentRigidbody().MovePosition( transform.localPosition moveDerictor * velocity * Time.deltaTime); //速度*方向 向量//此时物体并非跟着自己的旋转方向进行移动而是根据自身位置进行改变//白话无法变成FPS的第一视角进行当前视角当前前进 }}private void MouseRotation(){}}
⭐️⭐ ⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习 你们的点赞 收藏⭐ 留言 关注✅是我持续创作输出优质内容的最大动力、