我是靠谱客的博主 害羞白云,最近开发中收集的这篇文章主要介绍Unity 第三人称人物移动,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1,创建一个简单的物体作为角色
在这里插入图片描述
2,为物体添加移动代码:本次使用的方式A、D键控制前后运动,W、S键控制转向

	transform.Translate(0, 0, speed * Input.GetAxis("Vertical"));//Translate可以控制物体移动
    transform.Rotate(0, speed *20* Input.GetAxis("Horizontal"),0);//Rotate可以控制物体转向

3,物体需要跳跃:当按下空格键,AddForce可以给物体一个力,而Vector.up可以控制力的方向向上

if(Input.GetKeyDown(KeyCode.Space))
        {
            this.GetComponent<Rigidbody>().AddForce(Vector3.up * 6000);
        }

4,为了使得物体不摔倒,使用eulerAngles给物体一个角度判断`

if ((this.transform.eulerAngles.x > 90 && this.transform.eulerAngles.x < 270) || (this.transform.eulerAngles.z > 90 && this.transform.eulerAngles.z < 270))
        {
            transform.eulerAngles = new Vector3(0, 180, 0);
        }

5,给物体添加一个跟随相机,首先创建一个相机,然后把这个脚本赋给相机,player为玩家,通过玩家的位置,来为相机创建一个跟随位置。
第二行的lerp是一个插值运算方法,可以使得相机平滑的跟随着人物来运动。
为了使得相机在人物背后,可以使用LookAt来注视玩家。


	Vector3 camera_felow = player.position + Vector3.up * speed_one - first.forward * speed_two;
    transform.position = Vector3.Lerp(transform.position, camera_felow, Time.deltaTime * smooth);       
   	transform.LookAt(first.position);//lookat为注视物体的效果

最后附上完整的两个代码:
玩家:脚本直接添加在需要控制移动的角色身上

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

public class three_run : MonoBehaviour
{
    public  float speed = 0.1f; //定义一个速度
    void Update()
    {
    	//控制物体的移动
        transform.Translate(0, 0, speed * Input.GetAxis("Vertical"));
        transform.Rotate(0, speed *20* Input.GetAxis("Horizontal"),0);
        //实现跳跃的效果
        if(Input.GetKeyDown(KeyCode.Space))
        {
            this.GetComponent<Rigidbody>().AddForce(Vector3.up * 6000);
        }
        //防止物体倒下(如果是角色控制器可以直接面板调整)
        if ((this.transform.eulerAngles.x > 90 && this.transform.eulerAngles.x < 270) || (this.transform.eulerAngles.z > 90 && this.transform.eulerAngles.z < 270))
        {
            transform.eulerAngles = new Vector3(0, 180, 0);
        }    
    }
}

相机:脚本添加到相机上面, 并将跟随的角色拖入

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

public class three_camera : MonoBehaviour
{
    public Transform player;
    public float speed_one=10f;  
    public float speed_two=10f; //使用speed_one,speed_two可以调整玩家和相机的距离
    private float smooth = 1f;  
    void LateUpdate()
    {
        Vector3 camera_felow = player.position + Vector3.up * speed_one - player.forward * speed_two;
        transform.position = Vector3.Lerp(transform.position, camera_felow, Time.deltaTime * smooth);
        transform.LookAt(player.position);
    }
}

最后

以上就是害羞白云为你收集整理的Unity 第三人称人物移动的全部内容,希望文章能够帮你解决Unity 第三人称人物移动所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部