当前位置: 首页 > wzjs >正文

青海省wap网站建设公司关键词优化推广公司

青海省wap网站建设公司,关键词优化推广公司,在线生成小程序,java做网站的步骤目录 1 不同状态之间的切换模式 1.1 在1个连续状态和一个连续状态之间的transition,使用trigger 1.2 在2个连续状态之间的转换,使用bool值切换转换 2 至少现在有2种角色的移动控制方式 2.1 用CharacterController 控制角色的移动 2.2 用animator…

目录

1 不同状态之间的切换模式

1.1 在1个连续状态和一个连续状态之间的transition,使用trigger

1.2 在2个连续状态之间的转换,使用bool值切换转换

2  至少现在有2种角色的移动控制方式

2.1  用CharacterController 控制角色的移动

2.2 用animator1 控制角色移动

2.3 共同特点, WASD键盘控制可以通过这2个轴形成的向量的方法实现

3 代码控制移动动画的播放

3.1 检测WASD移动,用轴向量的代码实现

3.2 按键改变面向

3.3  播放动画

3.4 移动

3.5 Animator的设置

3.5.1 动作状态的设置

3.5.2 设置好新的参数

3.5 完整代码

3.6 小心难缠的BUG


1 不同状态之间的切换模式

  • 1个连续状态和一个连续状态之间的transition,使用trigger触发那个一次性状态即可
  • 2个连续状态之间的转换,使用bool值,在2个连续状态之间进行转换

1.1 在1个连续状态和一个连续状态之间的transition,使用trigger

  • 不勾选wave参数时,始终执行run 
  • 勾选了wave参数时,相当于满足了一次 wave的trigger触发条件
  • 可以看到会执行一次wave动作
  • 使用trigger来触发单次的动作

1.2 在2个连续状态之间的转换,使用bool值切换转换

  • 2个连续状态之间的转换
  • 因为2个状态都是连续的,所以任何一个状态都能持续
  • 使用bool值,在2个连续状态之间进行转换

2  至少现在有2种角色的移动控制方式

  • 角色控制器 CharacterController
  • 控制角色的移动动画  Animator

2.1  用CharacterController 控制角色的移动

  • 需要角色上有CharacterController 的component

   

    private CharacterController player1;

    player1=GetComponent<CharacterController>();

void Update()

    {

        //水平轴

        float horizontal=Input.GetAxis("Horizontal");

        //垂直轴

        float vertical=Input.GetAxis("Vertical");

        //创建成一个方向向量

        Vector3 dir1=new Vector3(horizontal,0,vertical);

        Debug.DrawRay(transform.position,dir1,Color.red);

        //

        player1.SimpleMove(dir1);

        //player1.transform.Translate(dir1*2.0f*Time.deltaTime);

        player1.Move(dir1*moveSpeed*Time.deltaTime);

    }

}

2.2 用animator1 控制角色移动

  • 需要角色上有animator的component
  • animator 吧动画state设置好
  • 且角色模型有不同的动作

    private Animator animator1;
     animator1=GetComponent<Animator>();

void Update()

    {

        float horzontal=Input.GetAxis("Horizontal");

        float vetical=Input.GetAxis("Vertical");

        Vector3 dir1=new Vector3(horzontal,0,vetical);

        Debug.DrawRay(transform.position,dir1,Color.red);

       

        //如果按下了移动按键

        if(dir1 != Vector3.zero)

        {

            //面向向量

            transform.rotation=Quaternion.LookRotation(dir1);

            //播放跑步动画
            animator1.SetBool("IsRun",true);
            //朝着面向的前方移动
            //transform.Translate(Vector3.forward*2*Time.deltaTime);

2.3 共同特点, WASD键盘控制可以通过这2个轴形成的向量的方法实现

        float horzontal=Input.GetAxis("Horizontal");

        float vetical=Input.GetAxis("Vertical");

        Vector3 dir1=new Vector3(horzontal,0,vetical);

3 代码控制移动动画的播放

3.1 检测WASD移动,用轴向量的代码实现

float horzontal=Input.GetAxis("Horizontal");

float vetical=Input.GetAxis("Vertical");

Vector3 dir1=new Vector3(horzontal,0,vetical);

3.2 按键改变面向

  • 可以实现原地播放动画

//面向向量
transform.rotation=Quaternion.LookRotation(dir1);

//可以实现原地播放动画

3.3  播放动画

//播放跑步动画
            animator1.SetBool("IsRun",true);

//播放walk动画
            animator1.SetBool("IsRun",false);

3.4 移动

//朝着面向的前方移动
//transform.Translate(Vector3.forward*2*Time.deltaTime);
 

3.5 Animator的设置

3.5.1 动作状态的设置

3.5.2 设置好新的参数

  • entry接着默认状态是walk
  • 新增参数IsRun
  • IsRun,用来切换walk和RUN
  • wave参数继续控制WAVE动作

3.5 完整代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TestPlayer1 : MonoBehaviour
{private Animator animator1;// Start is called before the first frame updatevoid Start(){animator1=GetComponent<Animator>();}// Update is called once per framevoid Update(){float horzontal=Input.GetAxis("Horizontal");float vetical=Input.GetAxis("Vertical");Vector3 dir1=new Vector3(horzontal,0,vetical);Debug.DrawRay(transform.position,dir1,Color.red);//如果按下了移动按键if(dir1 != Vector3.zero){//面向向量transform.rotation=Quaternion.LookRotation(dir1);//播放跑步动画animator1.SetBool("IsRun",true);//朝着面向的前方移动transform.Translate(Vector3.forward*2*Time.deltaTime);}else{//播放walk动画animator1.SetBool("IsRun",false);}if(Input.GetKeyDown(KeyCode.Q)){//触发wave参数GetComponent<Animator>().SetTrigger("wave");}}
}

实测OK 

3.6 小心难缠的BUG

  • 不要把轴名字写错
  • 否则怎么也无法移动,但是很难定位错误
  • float vetical=Input.GetAxis("Vetical");     //错误的轴,但是不给你报错,大概时因为轴可以自定义名称吧
  • float vetical=Input.GetAxis("Vertical");    //正确的轴

http://www.dtcms.com/wzjs/167342.html

相关文章:

  • java动态网站建设视频域名注册需要什么条件
  • 网站站长统计怎么做sem运营
  • 学动漫设计好就业吗seo去哪里学
  • 在虚拟主机上建设多个网站网站推广的途径有哪些
  • 有关建设的新闻网站百度图片识别搜索
  • 上海医疗器械网站前置审批商丘seo优化
  • 高级的网站建设高端网站建设制作
  • 专业网站建设教程浏览器大全网站
  • 个人网站模块手机百度搜索app
  • 网站的建设与维护3步打造seo推广方案
  • 日照seo优化公司网站关键词排名优化推广软件
  • 企业网站建设空间咖啡seo是什么意思
  • 西安行业网站制作现在推广什么app最挣钱
  • 成都网站制作怎么收费品牌宣传有哪些途径
  • 西安有哪些做网站建设的公司百度一下官方下载安装
  • 北京制作公司网站外贸怎么建立自己的网站
  • 网页设计课程报告四年级下册数学优化设计答案
  • 黄浦网站设计网站引流推广软件
  • 网站招牌模板google seo是什么
  • 罗湖做网站公司排名seo外包公司兴田德润官方地址
  • 大连网站制作流程外贸接单平台哪个最好
  • 怎么创一个网站东莞寮步最新通知
  • 做网站推广哪家公司好网站排名查询工具
  • 网站建设流程图visio百度帐号管家
  • 商户网站建设公司google推广教程
  • 汕头市门户网站建设电商网站建设公司哪家好
  • 做的网站上更改内容改怎么办怎样在网上推广自己的产品
  • wordpress主题应该怎么添加谷歌搜索引擎优化
  • 网站设计论文题目网上营销网站
  • 建设购物网站流程今天国际新闻大事