首页 \ 问答 \ 无论设置备用点如何,衍生单位总是移动到相同的目标(Spawned Units always move to same target regardless of setting alternate points)

无论设置备用点如何,衍生单位总是移动到相同的目标(Spawned Units always move to same target regardless of setting alternate points)

我对团结是新的,我正试图创造一个新的游戏。

using UnityEngine;
using System.Collections;

public class Enemyblue1script : MonoBehaviour {

    // Use this for initialization

public float speed; // speed variable
public float RotSpeed = 90f;
public GameObject RocketGO; // Reference to our main character Rocket
void Start ()
{}

void Update()
{
    Vector2 Pos = new Vector2 (-10, 5);
    gameObject.transform.position = Vector3.MoveTowards (gameObject.transform.position, Pos, speed * Time.deltaTime);
    Invoke ("MoveFace", 2f);
}

void MoveFace()
{
    if( RocketGO == null)
    {
        GameObject go = GameObject.FindGameObjectWithTag("Rocket");
        if(go != null){
            RocketGO = go ;}
    }
    if( RocketGO == null)
        return;

    Vector3 dir = RocketGO.transform.position - gameObject.transform.position;
    dir.Normalize();

    float zAngle = Mathf.Atan2(dir.x , dir.y) * Mathf.Rad2Deg + 360;

    Quaternion desiredRot = Quaternion.Euler(0 ,0,-zAngle);
    gameObject.transform.rotation = Quaternion.RotateTowards(gameObject.transform.rotation , desiredRot , RotSpeed * Time.deltaTime);
}
}

这是我将敌人移动到某个点的脚本(使用MoveTowards功能)并将敌人旋转到玩家方向。 我还有一个脚本是用来产生这些敌人(一次有两个敌人)脚本

using UnityEngine;
using System.Collections;

public class Enemy1Spawner : MonoBehaviour {

//our meteorite prefab
public GameObject Enemy1blue;
public float speed;
public GameObject p1;
public GameObject p2;

// Use this for initialization
void Start ()
{}

// Update is called once per frame
void Update ()
{}

void SpawnEnemy1blue()
{
    //bottom left point of screen
    //Vector2 min = Camera.main.ViewportToWorldPoint (new Vector2 (0, 0));

    //top right point of screen
    //Vector2 max = Camera.main.ViewportToWorldPoint (new Vector2 (1, 1));

    GameObject Enemy1ablue = (GameObject)Instantiate (Enemy1blue);
    GameObject Enemy2ablue = (GameObject)Instantiate (Enemy1blue);
    Enemy1ablue.transform.position = new Vector2 (-11,9);
    Enemy2ablue.transform.position = new Vector2 (11,9);
}

public void startEnemy1blueSpawner()
{
    Debug.Log ("Invoked Spawning Blue Enemy");
    InvokeRepeating ("SpawnEnemy1blue",5f,30f); 
}

//function to stop spawning when game over
public void StopEnemy1blueSpawning()
{
    CancelInvoke ("SpawnEnemy1blue");
}
}

所以现在虽然产生了敌人! 我的敌人只朝着一个点移动,即Vector2 Pos = new Vector2 (-10, 5); 我在Updat()方法中定义了Enemyblue1script ,并且我想在Vector2 Pos = new Vector2 (-10, 5) (在左侧)的不同位置产生两个敌人; 一个在Vector2 Pos = new Vector2 (10, 5) (在右侧);

通过使用这两个脚本,我能够同时产生两个敌人,但他们都移动到同一点,这是我不想发生的事情。 我已经尝试过像ENEMY1SPAWNER脚本> SpawnEnemy1blue()函数中的东西,我也创建了两个使用vector2的点,并且我为两个不同的敌人调用了两个Movetowards函数,但不工作,他们没有移动。

    Vector2 Pos1 = new Vector2 (-10, 5);
    Vector2 Pos2 = new Vector2 (10, 5);

    GameObject Enemy1ablue = (GameObject)Instantiate (Enemy1blue);
    GameObject Enemy2ablue = (GameObject)Instantiate (Enemy1blue);
    Enemy1ablue.transform.position = new Vector2 (-11,9);
    Enemy2ablue.transform.position = new Vector2 (11,9);

    Enemy1ablue.transform.position = Vector3.MoveTowards (Enemy1ablue.transform.position, Pos1, speed * Time.deltaTime);
    Enemy2ablue.transform.position = Vector3.MoveTowards (Enemy2ablue.transform.position, Pos2, speed * Time.deltaTime);

I am new to unity and i am trying to create a new game.

using UnityEngine;
using System.Collections;

public class Enemyblue1script : MonoBehaviour {

    // Use this for initialization

public float speed; // speed variable
public float RotSpeed = 90f;
public GameObject RocketGO; // Reference to our main character Rocket
void Start ()
{}

void Update()
{
    Vector2 Pos = new Vector2 (-10, 5);
    gameObject.transform.position = Vector3.MoveTowards (gameObject.transform.position, Pos, speed * Time.deltaTime);
    Invoke ("MoveFace", 2f);
}

void MoveFace()
{
    if( RocketGO == null)
    {
        GameObject go = GameObject.FindGameObjectWithTag("Rocket");
        if(go != null){
            RocketGO = go ;}
    }
    if( RocketGO == null)
        return;

    Vector3 dir = RocketGO.transform.position - gameObject.transform.position;
    dir.Normalize();

    float zAngle = Mathf.Atan2(dir.x , dir.y) * Mathf.Rad2Deg + 360;

    Quaternion desiredRot = Quaternion.Euler(0 ,0,-zAngle);
    gameObject.transform.rotation = Quaternion.RotateTowards(gameObject.transform.rotation , desiredRot , RotSpeed * Time.deltaTime);
}
}

This is my script for Moving Enemy towards some point (using MoveTowards funtion) and rotating enemy to Players direction. And i have one more script that is for Spawning these enemeies (Two Enemies at a time ) Script is

using UnityEngine;
using System.Collections;

public class Enemy1Spawner : MonoBehaviour {

//our meteorite prefab
public GameObject Enemy1blue;
public float speed;
public GameObject p1;
public GameObject p2;

// Use this for initialization
void Start ()
{}

// Update is called once per frame
void Update ()
{}

void SpawnEnemy1blue()
{
    //bottom left point of screen
    //Vector2 min = Camera.main.ViewportToWorldPoint (new Vector2 (0, 0));

    //top right point of screen
    //Vector2 max = Camera.main.ViewportToWorldPoint (new Vector2 (1, 1));

    GameObject Enemy1ablue = (GameObject)Instantiate (Enemy1blue);
    GameObject Enemy2ablue = (GameObject)Instantiate (Enemy1blue);
    Enemy1ablue.transform.position = new Vector2 (-11,9);
    Enemy2ablue.transform.position = new Vector2 (11,9);
}

public void startEnemy1blueSpawner()
{
    Debug.Log ("Invoked Spawning Blue Enemy");
    InvokeRepeating ("SpawnEnemy1blue",5f,30f); 
}

//function to stop spawning when game over
public void StopEnemy1blueSpawning()
{
    CancelInvoke ("SpawnEnemy1blue");
}
}

So now while Spawning enemies! my enemies are moving towards only one point i.e Vector2 Pos = new Vector2 (-10, 5); which I have defined in Updat() method of Enemyblue1script, and i want to spawn two enemies at a different positions one at Vector2 Pos = new Vector2 (-10, 5) (to the left side); and one at Vector2 Pos = new Vector2 (10, 5) (to the right side);

By using these two scripts i am able to spawn two enemies at a time, but they both move to same point, which is what i do not want to happen. I have tried stuff like in ENEMY1SPAWNER script > SpawnEnemy1blue() function i have also created two points using vector2 and i called two Movetowards functions there for two different enemies but is not working they are not moving.

    Vector2 Pos1 = new Vector2 (-10, 5);
    Vector2 Pos2 = new Vector2 (10, 5);

    GameObject Enemy1ablue = (GameObject)Instantiate (Enemy1blue);
    GameObject Enemy2ablue = (GameObject)Instantiate (Enemy1blue);
    Enemy1ablue.transform.position = new Vector2 (-11,9);
    Enemy2ablue.transform.position = new Vector2 (11,9);

    Enemy1ablue.transform.position = Vector3.MoveTowards (Enemy1ablue.transform.position, Pos1, speed * Time.deltaTime);
    Enemy2ablue.transform.position = Vector3.MoveTowards (Enemy2ablue.transform.position, Pos2, speed * Time.deltaTime);

原文:https://stackoverflow.com/questions/32669707
更新时间:2023-11-04 09:11

最满意答案

INT_FAST16_MAX是可存储在int_fast16_t变量中的int_fast16_t

int_fast16_t保证是最快的int,大小至少为 16位。

由于MSVC的目标机器是32位通用寄存器,其访问速度比16位更快,因此int_fast16_t实际上是一个32位整数。 因此, INT_FAST16_MAXINT32_MAX

也可以看看:


INT_FAST16_MAX is the largest value that can be stored in an int_fast16_t variable.

int_fast16_t is guaranteed to be the fastest int with a size of at least 16 bits.

Because MSVC is targeting machines that have 32-bit general purpose registers which are faster to access than 16-bit, int_fast16_t is actually a 32-bit integer. And thus, INT_FAST16_MAX is INT32_MAX.

See also:

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)