using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class PlyerCtr : MonoBehaviour
{
public int MoveSpeed;
private Rigidbody _rig;//给物体加刚体
private Animator _animator;//给物体加动画切片
private Vector3 _movePosition;//想要有物体死亡的慢慢向下的过度动画
private float h, v;//定义
private Camera _mainCamera;
// Use this for initialization
void Start()
{
_rig = GetComponent<Rigidbody>();
if (null == _rig)
{
_rig = gameObject.AddComponent<Rigidbody>();
}
要想保持物体不掉落和不倒
//冻结X和Z轴
_rig.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ| RigidbodyConstraints.FreezePositionY;
h = 0;
v = 0;
_movePosition = Vector3.zero;
MoveSpeed = 5;
_animator = GetComponent<Animator>();
_mainCamera = Camera.main;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
DeathFunc();
}
}
public void FixedUpdate()
{
h = Input.GetAxis("Horizontal");
v = Input.GetAxis("Vertical");
_movePosition.Set(h, 0, v);
#region 移动
//transform.position + _mp
_movePosition = _movePosition.normalized * MoveSpeed;
_rig.MovePosition(transform.position + _movePosition * Time.deltaTime);
#endregion
#region 旋转
//射线检测
Ray _ray = _mainCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(_ray, out hit, 100, 1 << 8))
{
//保持玩家Y一样 背会
Vector3 posVector3 = new Vector3(hit.point.x, transform.position.y, hit.point.z);
posVector3 = posVector3 - transform.position;
transform.rotation = Quaternion.LookRotation(posVector3);
}
#endregion
#region 动画
bool isMove = h == 0 && v == 0;
// bool isMove = h != 0 || v != 0;
_animator.SetBool("Move", !isMove);
#endregion
}
void DeathFunc()
{
_animator.SetTrigger("Death");
_rig.isKinematic = true;
transform.DOLocalMoveY(-2, 5);
}
public void StopGame()
{
}
}
玩家移动脚本
最新推荐文章于 2023-04-26 15:47:59 发布