Unity7--键盘按键、沿Z轴移动来回循环、PingPong用法

这篇博客介绍了如何在Unity中使用键盘按键控制对象沿Z轴进行正反方向的循环移动,并展示了如何运用PingPong函数实现对象在指定范围内的来回移动。通过示例代码,解释了`Transform.Translate`和`Mathf.PingPong`的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、创建个TransformTest文件

  //GameObject Transform虽然都可以得到名字但有区别--------------写在最上边的代码

    publicGameObject obj1;

    publicTransform obj2;

    //4对应的代码

    //如果int Flag 1,就正方向移动

    int intFlag = 1;

    publicfloat speed;

//从这开始:

1.void Start () {

        //1.都可以得到GameManger,不同写法而已

        Debug.Log("Transform.name" + this.transform.name);

        Debug.Log("gameObject.name" + this.gameObject.name);

        Debug.Log(transform.gameObject.name);

        Debug.Log(gameObject.transform.name);

 

       //2.

        Debug.Log("obj1.name" + obj1.name);

        Debug.Log("obj2.name" + obj1.name);

        //虽然都可以得到名字,都各有特点

        Debug.Log(obj1.transform.position);

       Debug.Log(obj2.position);

2.void Update () {               --也有GetKeyUp

        //3.通过获取按键,按键才会走

        if (Input.GetKey(KeyCode.W)) //--------前进

        {

            obj1.transform.Translate(Vector3.forward * Time.deltaTime * 2);//

        }

 

        if (Input.GetKey(KeyCode.S)) //----------后退

        {

            obj1.transform.Translate(Vector3.back * Time.deltaTime * 2);

        }

 

        if (Input.GetKey(KeyCode.A)) //--------左移

        {

            // obj1.transform.Translate(Vector3.left *Time.deltaTime * 2);    

           obj1.transform.Rotate(newVector3(0, -30, 0) * Time.deltaTime);//左旋转 W A 会左转弯

        }


        if (Input.GetKey(KeyCode.D)) //---------右移

        {

            // obj1.transform.Translate(Vector3.right  * Time.deltaTime * 2);-----------右移

            obj1.transform.Rotate(newVector3(0, 30, 0) * Time.deltaTime);//右旋转 W A 会转弯

        }

 

        if (Input.GetKey(KeyCode.Space))// --------

        {

            obj1.transform.Translate(Vector3.up * Time.deltaTime * 2);

        }

 

        //物体会前进定义的是速度

        //  obj1.transform.Translate(Vector3.forward *Time.deltaTime *2);//1帧一米,160帧,每秒1米, //相当于每秒向前走两  

       米,2是速度

二、//练习题目4.沿着Z轴移动,到10就返回反方向移动来回循化

     // 最上面有对应的4代码公共定义

 void Move()                       //-----------在Update里调用

    {

        //如果z轴坐标大于10,就向负方向移动

         if(obj1.transform .position .z>10)

        {

            intFlag = -1;

        }

        //游戏对象的坐标小于0的时候,就向正方向移动

         if(obj1.transform .position .z <=0)

        {

            intFlag = 1;

        }

        //如果intFlag=-1,那么Vectore3.forword *intFlag 等同于Vectore3.back,

       obj1.transform.Translate(Vector3.forward * intFlag * Time.deltaTime * speed);//在unity里可定义speed

   }

三、用PingPong方法实现上面的题目来回循环

  publicVector3 startPosition;

  publicGameObject obj1;

1.void Start () {

  publicVector3 startPosition;

}

2.void Update () {

   //用PingPong 求4的要求,简单----两行代码就行     

    float value= Mathf.PingPong(Time.time, 10)-5;            //010来回返回,整体-5,就会从-55之间运行

    obj1.transform.position = startPosition + newVector3(0, 0, value);   //在void start里有定义

    Debug.Log(obj1);

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值