控制角色脚本

方法一
这个方法适用于第三人称角色控制,摄像机以固定的一个方向跟随角色移动,角色在屏幕上以向上下左右移动的状态显示。
在玩家模型上添加C# Player脚本,并且在摄像机挂载摄像机跟随脚本 FollowTags

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

public class Player : MonoBehaviour
{
    //速度
    public float speed = 1;
    //玩家
    public Transform player;
    //刚体
    public Rigidbody PlayerRigidbody;
    //平滑值
    private float smoothing;
    //旋转速度
    public float rotateSpeed = 0;
        //跳跃的力量
    public float jumpForce = 0;
    //动画控制器
    public Animator Anim;
    //移动纵横值
    private float h;
    private float v;

    private void Awake()
    {
        //获取刚体
        PlayerRigidbody = transform.GetComponent<Rigidbody>();
        //获取动画控制器
        Anim = transform.GetComponent<Animator>();
    }

    private void Update()
    {

        //移动
        Move();
        //旋转
        Rotation();
         //跳跃
        Jump();
    }

    //移动
    public void Move()
    {
        //获取输入的横向和纵向值
        h = Input.GetAxis("Horizontal");
        v = Input.GetAxis("Vertical");
        //Translate控制移动
        //transform.Translate(new Vector3(h, 0, v) * speed * Time.deltaTime);
        //刚体移动方法
        PlayerRigidbody.MovePosition(transform.position + new Vector3(h, 0, v) * speed * Time.deltaTime);
        //动画控制
        if (h != 0 || v != 0)
        {
            Anim.SetBool("Move", true);
        }
        else
        {
            Anim.SetBool("Move", false);
        }
    }

    //旋转
    public void Rotation()
    {
        Vector3 targetDir = new Vector3(h, 0, v);
        //四元数
        Quaternion newRotation = Quaternion.LookRotation(targetDir, Vector3.up);
        //旋转值赋值
        transform.rotation= Quaternion.Lerp(transform.rotation, newRotation, rotateSpeed * Time.deltaTime);
    }

 //跳跃
    public void Jump()
    {
        if (Input.GetButtonUp("Jump"))
        {
            print("jump");
            
            PlayerRigidbody.velocity = new Vector2(PlayerRigidbody.velocity.x, 0);//施加y方向速度,x方向维持原速
            PlayerRigidbody.AddForce(new Vector2(PlayerRigidbody.velocity.x, jumpForce));
        }
    }}

方法二
这个方法适用于第三人称角色控制,摄像机永远在背后跟随角色移动,角色永远向前移动。
在玩家模型上添加C# PlayerRotation 脚本,并把摄像机放到角色里。

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

public class PlayerRotation : MonoBehaviour
{
    public float moveSpeed = 60f;
    public float angularSpeed = 3f;

    private Rigidbody PlayerRigidbody;
    private float h = 0.0f;
    private float v = 0.0f;
    public float jumpForce=2000;

    private Animator Anim;

    // Start is called before the first frame update
    void Start()
    {
        PlayerRigidbody = this.GetComponent<Rigidbody>();
        Anim = transform.GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        //跳
        Jump();

        
            //前后移动
           Move();
        
        
            //旋转
           Rotation();


    }

    //移动
    public void Move()
    {
        //获取上下键并控制前后移动
        v = Input.GetAxis("Vertical");
        //刚体移动方法
        PlayerRigidbody.AddForce(transform.forward * v * moveSpeed * Time.deltaTime, ForceMode.Impulse);
        //以下移动方法行走时跳不起来
        //PlayerRigidbody.velocity = transform.forward * v * moveSpeed * Time.deltaTime;

        if (v != 0)
        {

            Anim.SetBool("Move", true);
        }
        else
        {
            Anim.SetBool("Move", false);
        }
    }

    //旋转
    public void Rotation()
    {
        //获取水平按键值并控制左右旋转
        h = Input.GetAxis("Horizontal");
        //起跳
        PlayerRigidbody.angularVelocity = transform.up * h * angularSpeed;
   
       
    }

    

    //跳跃
    public void Jump()
    {
        if (Input.GetButtonUp("Jump"))
        {
            print("jump");

            PlayerRigidbody.velocity = new Vector2(PlayerRigidbody.velocity.x, 0);//施加y方向速度,x方向维持原速
            PlayerRigidbody.AddForce(new Vector2(PlayerRigidbody.velocity.x, jumpForce));
        }
    }
}


方法三
这个方法适用于第一人称角色控制,在角色身上挂载移动脚本 PlayerRotation,摄像机需添加到骨骼节点Spine2里,节点上需挂载 第三人称视觉脚本 LookAround,并调节旋转角度参数,这样移动鼠标就可以带动画面环顾四周,上身骨骼会跟随鼠标进行上下左右,并且模型下身也会跟随水平旋转。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity官方提供的人物控制脚本是指Unity软件自带的一种用来控制游戏角色移动、跳跃和互动等操作的脚本。该脚本是Unity中非常常用的一部分,可用于创建第一人称、第三人称和平台游戏等不同类型的角色控制。 人物控制脚本通常包含以下几个主要功能: 1. 移动控制:通过键盘、鼠标或手柄等输入设备来控制角色在场景中的移动方向和速度。可以使用轴向输入或力的方式来实现不同的移动效果。 2. 跳跃控制:通过按键等方式触发角色的跳跃行为,并控制跳跃高度和距离。可以使用重力、力和动画等方式来模拟真实的跳跃效果。 3. 互动控制控制角色与场景中的物体进行交互,如开门、拾取物品等。可以通过射线检测、触发器和碰撞器等方式来实现角色与物体的交互逻辑。 4. 碰撞检测:检测角色与场景中的碰撞器发生碰撞,并触发相应的反应。可以用于检测角色与墙壁、敌人、障碍物等的碰撞情况,并处理相应的移动控制或伤害逻辑。 5. 动画控制:根据角色的移动状态和动作来控制角色的动画播放。可以根据不同的输入和碰撞状态来切换不同的动画状态,使角色呈现出逼真的动作表现。 Unity官方提供的人物控制脚本可以作为游戏开发的起点,开发者可以基于此脚本进行更加复杂的角色控制逻辑的构建。同时,Unity还提供了丰富的文档和教程,助开发者理解和使用各项功能,并能够根据实际需求进行个性化的定制。 ### 回答2: Unity官方人物控制脚本是一个用于控制游戏中角色移动的脚本。 首先,在Unity中,角色控制通常使用Character Controller组件,它负责处理角色的碰撞、重力和移动等方面的逻辑。 官方提供的人物控制脚本提供了一些常见的角色控制功能,比如角色的移动速度、跳跃高度、加速度等。通过在脚本中设置对应的参数,我们可以轻松地控制角色的行为。 该脚本还提供了一些内置的输入检测功能,比如检测玩家是否按下了键盘上的方向键、空格键等。通过这些输入检测的逻辑,可以实现角色的移动、跳跃等操作。 另外,官方人物控制脚本还包含了一些常见的动画过渡逻辑,比如角色的奔跑、行走、站立等动作。通过在脚本中设置对应的动画触发条件,可以让角色在不同的情况下播放不同的动画。 总之,Unity官方人物控制脚本提供了一个便捷的方式来控制游戏中的角色。通过简单的设置和调整,我们可以实现角色的基本移动、跳跃和动画播放等功能。在开发游戏时,使用官方提供的人物控制脚本可以大大减少我们的工作量,提高开发效率。 ### 回答3: Unity官方提供的人物控制脚本是一种基于脚本的解决方案,用于控制游戏中的角色行为。这个脚本包含了一系列函数和变量,可以用于实现角色的移动、跳跃、旋转等基本动作。 在Unity官方的人物控制脚本中,常见的变量包括速度变量、重力变量、角色控制器等。通过改变这些变量的数值,可以调整角色的移动速度、重力表现和碰撞检测等行为。 此外,Unity官方人物控制脚本还提供了一系列函数,用于响应玩家的输入,并更新角色的状态。例如,可以在Update函数中通过接收玩家输入的键盘或鼠标事件,实现角色的移动操作。另外,在FixedUpdate函数中可以使用角色控制器的Move函数进行碰撞检测和移动处理。 通过使用Unity官方提供的人物控制脚本,开发者可以方便地实现角色的基本操作,从而为游戏添加更丰富的交互性。同时,该脚本也提供了一些常用的功能和接口,如射线检测、跳跃力度控制等,方便开发者进一步扩展和定制角色的行为。 总之,Unity官方人物控制脚本是一种便捷的解决方案,用于实现角色的基本操作和行为。通过研究和使用这个脚本,开发者可以加快游戏开发速度,并为角色添加更多的交互性和动态性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值