Unity3d与C#,sendmessage与if语句联动,附新手2种移动模式和3种摄像头模式

注意:我才学几个月的编程,八九成的代码是复制的网上大佬和GPTai的。发布此文章的目的是为了防止以后忘了。

下方代码中,我提前把unity3d中编辑》选项设置》输入管理器里,控制w键和s键的Horizontal轴改名成了WSY,控制a键和d键的Vertical轴改名成了ADY。这段代码上边还写了:

    public float moveSpeed = 5;//设立数值移动速度为5
    public float rotateSpeed = 30;//设立数值旋转速度为30
    public float wsy;//设立数值wsy
    public float ady;//设立数值ady
    public Rigidbody GangTi;//设立刚体对象gangti

            wsy = Input.GetAxis("WSY");//使wsy和输入管理器中的轴有关联
            ady = Input.GetAxis("ADY");//使ady和输入管理器中的轴有关联
            Rigidbody GangTi = this.gameObject.GetComponent<Rigidbody>();
            if (wsy != 0)//如果wsy的值不为0,则向前后移动,方向取决于数值的正负
            {
                if (GangTi != null)
                {
                    Vector3 targetPos = GangTi.position + GangTi.transform.forward * wsy * moveSpeed * Time.deltaTime;
                    GangTi.MovePosition(targetPos);
                }
                BroadcastMessage("TheisMoving","yidong");//发送消息“isMoving”给挂载物体和挂载物体的子物体及其子物体
            }
            if (ady != 0)//如果ady的值不为0,则向左右移动,方向取决于数值的正负
            {
                if(GangTi != null)
                {
                    Vector3 targetPos = GangTi.position + GangTi.transform.right * ady * moveSpeed * Time.deltaTime;
                    GangTi.MovePosition(targetPos);
                }
                BroadcastMessage("TheisMoving","yidong");//发送消息“isMoving”给挂载物体和挂载物体的子物体及其子物体
            }
            //这串代码是防止摄像头移动时角色正前方向始终跟随摄像机正前方向
            if (wsy == 0 && ady == 0)//如果进退y和左右y的值皆为零,则运行下方逻辑
            {
                BroadcastMessage("TheisMoving", "Noyidong");//发送消息“NoisMoving”给挂载物体和挂载物体的子物体及其子物体。
            }

BroadcastMessage方法来发送消息,是因为我把摄像机脚本所挂载的物体mainCamera放在了人物移动的脚本所挂载的物体之下。也就是说人物是摄像机的父物体。

private bool isMoving = false;//设置布尔值isMoving为否

public void TheisMoving(string message)//接收信号名称为TheisMoving的消息,创建参数message为下方接收参数
    {
        Debug.Log("AAA");//在Unity3d的控制台输出AAA
        if (message == "yidong")//如果参数==yidong,则运行if下方逻辑
        {
            MovingA();//调用下方的MovingA
        }
        //这串代码是防止摄像头移动时角色正前方向始终跟随摄像机正前方向
        if (message == "Noyidong")//如果参数==Noyidong,则运行if下方逻辑。
        {
            MovingB();//调用下方的MovingB
        }
    }
void MovingA()
    {
        isMoving = true;//修改isMoving的值为是
    }
void MovingB()
    {
        isMoving = false;//修改isMoving的值为否
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值