unity3D网络游戏实战之坦克单元

本文深入探讨了在Unity3D环境中实现网络游戏中坦克单元的控制,包括炮管和炮塔的精准操作,为读者提供了一套实战指南。
摘要由CSDN通过智能技术生成

      之前学的是建模,用C#编写游戏刚入门,也有很多小错误,和最开始写c是一样的,很多看着书都能敲错,所以把小错误记
下来。

1.对坦克进行上下左右控制。应该写成Tank结果把名字小写了,导致很长时间没看出来

void Start()
    {
        target = GameObject.Find("Tank");
    }

2.在写完程序后一定要先运行,先在VS中运行了,才能在unity中实现相应操作
3.控制坦克的移动这段程序我们要把C#托在Tank上才能实现

控制炮管、炮塔:

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

public class Tank : MonoBehaviour
{
    public Transform turret;
    public Transform gun;
    private float turretRotSpeed = 0.5f;
    private float turretRotTarget = 0;
    private float maxRoll = 10f;
    private float minRoll = -4f;
    private float turretRollTarget = 0;
    void Start()
    {
        turret = transform.FindChild("turret");
        gun = turret.FindChild("gun");
    }
    private void Update()
    {
        float steer = 20;
        float x = Input.GetAxis("Horizontal");
        transform.Rotate(0, x * steer * Time.deltaTime, 0);
        float speed = 3f;
        float y = Input.GetAxis("Vertical");
        Vector3 s = y * transform.forward * speed * Time.deltaTime;
        transform.transform.position += s;
        TurretRotation();
        turretRotTarget = Camera.main.transform.eulerAngles.y;
        turretRollTarget = Camera.main.transform.eulerAngles.x;
        TurretRoll();


    }
    //炮塔旋转
    public void TurretRotation()
    {
        if (Camera.main == null)
            return;
        if (turret == null)
            return;

        //归一化角度
        float angle = turret.eulerAngles.y - turretRotTarget;
        if (angle < 0) angle += 360;

        if (angle > turretRotSpeed && angle < 180)
            turret.Rotate(0f, -turretRotSpeed, 0f);
        else if (angle > 180 && angle < 360 - turretRotSpeed)
            turret.Rotate(0f, turretRotSpeed, 0f);
    }
    public void TurretRoll()
    {
        if (Camera.main == null)
            return;
        if (turret == null)
            return;
        //获取角度
        Vector3 worldEuler = gun.eulerAngles;
        Vector3 loca
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值