fix:风机初始化代码提交
This commit is contained in:
147
Assets/Scripts/juese_chuangke260320/ControlMovingAndAnimation.cs
Normal file
147
Assets/Scripts/juese_chuangke260320/ControlMovingAndAnimation.cs
Normal file
@@ -0,0 +1,147 @@
|
||||
using Cinemachine;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
//using static UnityEditor.Searcher.SearcherWindow.Alignment;
|
||||
|
||||
public class ControlMovingAndAnimation : MonoBehaviour
|
||||
{
|
||||
public Camera workerCamera;
|
||||
public GameObject bear;
|
||||
//Animation part
|
||||
private Animator anim;
|
||||
private CharacterController chara;
|
||||
private NavMeshAgent agent;
|
||||
//control moving part
|
||||
float Gravity = -9.8f;
|
||||
float yVelocity = 0f;
|
||||
private float MoveSpeed = 4f;
|
||||
|
||||
// cinamachine part
|
||||
public CinemachineFreeLook freeLook;
|
||||
public Transform head;
|
||||
private Vector3 lastPosition;
|
||||
//hit part
|
||||
// private Vector3 lastPos;
|
||||
//public Transform hitPoint;
|
||||
// public float radius = 0.3f;
|
||||
// private HashSet<Collider> hitTargets = new HashSet<Collider>();
|
||||
// public bool isAttacking = false;
|
||||
void Start()
|
||||
{
|
||||
// lastPosition = transform.position;
|
||||
anim = GetComponent<Animator>();
|
||||
// agent = GetComponent<NavMeshAgent>();
|
||||
chara = GetComponent<CharacterController>();
|
||||
|
||||
//lastPos = hitPoint.position;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
//这些是点哪走哪
|
||||
//Vector3 currentPosition = transform.position;
|
||||
//if (currentPosition != lastPosition)
|
||||
//{
|
||||
// anim.SetBool("IsWalking", true);
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// anim.SetBool("IsWalking", false);
|
||||
//}
|
||||
//lastPosition = currentPosition;
|
||||
//if (Input.GetMouseButtonDown(0))
|
||||
//{
|
||||
// Ray r = workerCamera.ScreenPointToRay(Input.mousePosition);
|
||||
// if (Physics.Raycast(r, out RaycastHit hit))
|
||||
// {
|
||||
// agent.SetDestination(hit.point);
|
||||
// }
|
||||
//}
|
||||
|
||||
//这些是键盘逻辑
|
||||
FreeFalling();
|
||||
PlayAnimations();
|
||||
Move();
|
||||
|
||||
|
||||
}
|
||||
private void FreeFalling()
|
||||
{
|
||||
if (chara.isGrounded && yVelocity < 0f)
|
||||
yVelocity = -2f;
|
||||
else
|
||||
yVelocity += Gravity * Time.deltaTime;
|
||||
chara.Move(new Vector3(0f, yVelocity, 0f) * Time.deltaTime);
|
||||
}
|
||||
private void PlayAnimations()
|
||||
{
|
||||
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S))
|
||||
{
|
||||
anim.SetBool("IsWalking", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
anim.SetBool("IsWalking", false);
|
||||
}
|
||||
|
||||
if (Input.GetKey(KeyCode.LeftShift))
|
||||
{
|
||||
MoveSpeed = 8f;
|
||||
anim.SetBool("IsRunning", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
MoveSpeed = 4f;
|
||||
anim.SetBool("IsRunning", false);
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.Space) && chara.isGrounded)
|
||||
{
|
||||
anim.SetTrigger("Jump");
|
||||
yVelocity = Mathf.Sqrt(20f);//向上初速度为根号10米每秒,大概跳0.5米
|
||||
}
|
||||
//if (Input.GetMouseButtonDown(0))
|
||||
//{
|
||||
// anim.SetTrigger("Fight");
|
||||
// // StartAttacking();
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
private void Move()
|
||||
{
|
||||
|
||||
Vector3 cameraWorldPos = freeLook.transform.position;//虚拟相机的位置
|
||||
Vector3 cameraToPlayerHeadVector = (head.position - cameraWorldPos).normalized;//相机指向角色的头,这个代表指向方向向量
|
||||
|
||||
Vector3 horizontalDirection = new Vector3(cameraToPlayerHeadVector.x, 0, cameraToPlayerHeadVector.z).normalized;//指向向量去除y方向再归一化
|
||||
Vector3 cameraRight = Vector3.Cross(Vector3.up, horizontalDirection).normalized;//垂直于相机指向,右手边
|
||||
|
||||
float DeltaHorizontal = Input.GetAxis("Horizontal");
|
||||
float DeltaVertical = Input.GetAxis("Vertical");//两个方向位移检测 -1到1
|
||||
Vector3 forwardMove = horizontalDirection * DeltaVertical;//视线指向方向乘上你按键的量,决定前进还是后退 W必然前进,s必然朝你走
|
||||
//Vector3 rightMove = cameraRight * DeltaHorizontal;
|
||||
//Vector3 move = forwardMove + rightMove;
|
||||
//Vector3 realMove = move.normalized * MoveSpeed * Time.deltaTime;
|
||||
Vector3 realMove = forwardMove * MoveSpeed * Time.deltaTime;
|
||||
chara.Move(realMove);
|
||||
if (forwardMove.sqrMagnitude > 0f)
|
||||
{
|
||||
Quaternion targetRotation = Quaternion.LookRotation(forwardMove);
|
||||
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 5f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//public void StartAttacking()
|
||||
//{
|
||||
// isAttacking = true;
|
||||
// hitTargets.Clear();
|
||||
|
||||
//}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user