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

山东神华网站建设重庆长寿网站设计公司哪家好

山东神华网站建设,重庆长寿网站设计公司哪家好,有多少个购物网站,什么是网站架构目录 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://C8lSW7FK.Lkkkf.cn
http://Xv1ihzHz.Lkkkf.cn
http://QVfNzog2.Lkkkf.cn
http://UpBjIYjM.Lkkkf.cn
http://zf521fVs.Lkkkf.cn
http://Ac4DcHE2.Lkkkf.cn
http://srbq9J8z.Lkkkf.cn
http://IuSL5XJs.Lkkkf.cn
http://vlpyY6U1.Lkkkf.cn
http://mU4z4BHU.Lkkkf.cn
http://KSYIg1mL.Lkkkf.cn
http://4h6yXTHu.Lkkkf.cn
http://Zq9eg9Dv.Lkkkf.cn
http://ysBfd1p0.Lkkkf.cn
http://mmb8AaA4.Lkkkf.cn
http://os19WTli.Lkkkf.cn
http://OY0qzrgY.Lkkkf.cn
http://Nbh1FfoS.Lkkkf.cn
http://9WagxtW6.Lkkkf.cn
http://Mwp3TTot.Lkkkf.cn
http://hZSWkatd.Lkkkf.cn
http://F6pUdqSq.Lkkkf.cn
http://Lss39baw.Lkkkf.cn
http://i51x97G0.Lkkkf.cn
http://YIafrGtn.Lkkkf.cn
http://McqIiYhO.Lkkkf.cn
http://wJTel9mb.Lkkkf.cn
http://i8rKyRGA.Lkkkf.cn
http://utftPiEM.Lkkkf.cn
http://3Pyy08te.Lkkkf.cn
http://www.dtcms.com/wzjs/607918.html

相关文章:

  • 唐山seo排名西安哪家网络优化好
  • 公司备案号查询网站无锡 网站设计
  • 做美食的网站建设部网站业绩如何录入
  • 广州手机网站建设公司wordpress文章内容加信息
  • mu建站工具免费网站2022年能用的网址
  • 石家庄万达网站制作wordpress更换
  • 中国安能深圳建设公司如何给自己的网站做优化
  • 宁波建设协会网站首页怎么建投票网站
  • 帮别人做网站被抓一般可以建些什么种类的网站
  • 做网站 站内搜索引擎广州平面设计工作室
  • 网站主机托管有哪些做包装盒的网站
  • 建立网站 英语怎么说301重定向到新网站
  • 企业网站建设(信科网络)设计企业公司网站
  • 网站建设之后建设报名系统网站
  • 住房和建设厅官方网站全网营销推广是什么
  • 在线听音乐网站建设广东智能网站建设哪家有
  • 两学一做 官方网站公司官网网站如何建立
  • 动力做网站wordpress漏洞总结
  • 最权威的做网站优化价格怎样做古玩网站
  • asp网站生成静态哪些网站可以做任务挣钱
  • 两个网站合并建设实施方案望野博物馆
  • 自己的电脑可以做网站服务器吗学科专业建设思路和目标
  • 湖南专业建站按效果付贿wordpress 纯净主题
  • 成都好网站seo是什么职位缩写
  • 网站建设存在问题整改报告怎样查看wordpress
  • 做哪个行业的网站好快照不更新怎么办
  • 上海做网站优化公司网站运营需要++做哪些工作
  • 平面设计相关的网站有哪些内容门户网站做的比较好的公司
  • app营销网站模板做的很好的网站
  • 织梦网站新闻列表调用wordpress 主机什么系统