wmjy.net
当前位置:首页 >> Unity3D PhysiCs2D.RAyCAst投射起始点问题 >>

Unity3D PhysiCs2D.RAyCAst投射起始点问题

这段代码是挂在敌人上的,player是我声明的代表玩家的一个GameObject!每次Print输出的都是红色报警,说调用的是空物体

//从角色位置向NPC发射一条经过鼠标位置的射线 Ray mRay=Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit mHi; if(Physics.Raycast(mRay,out mHi))//判断是否击中了什么 { if(Input.GetKeyDown(KeyCode.Space) || Input.GetMous...

if(Input.GetMouseButtonDown(0)) { GameObject abc = Instantiate(prefab) as GameObject; abc.transform.position = Input.mousePosition; }

void Test() { RaycastHit hit ; Vector2 v= new Vector2(Screen.width/2, Screen.height/2); //屏幕中心点 if(Physics.Raycast(Camera.main.ScreenPointToRay(v),out hit)){ //其他操作 } }

你有给m_layer指定碰撞层么? 工具栏Edit->project setting->tags里面指定碰撞层然后添加到player的Layer属性里

Ray的定义你没弄清楚,他是:开始于origin沿着direction的方向。所以第2个参数应该是方向向量而不是空间内一点。然后绘射线的话用Debug.DrawRay()比较好

if(Input.GetMouseButtonDown(0)){ var ray:Ray = cam.ScreenPointToRay(Input.mousePosition); var hit:RaycastHit; if(Physics.Raycast(ray,hit)){ if(hit.transform.name == gameObject.transform.name){ //实现特效的逻辑 } } } 把这段代码...

if(Input.GetMouseButtonDown(0)){ var ray:Ray = cam.ScreenPointToRay(Input.mousePosition); var hit:RaycastHit; if(Physics.Raycast(ray,hit)){ if(hit.transform.name == gameObject.transform.name){ //自己逻辑 renderer.material.mainT...

c#: using UnityEngine; using System.Collections; public class Pathing : MonoBehaviour { private int LayerGround; private bool CastRays = true; void Start () { LayerGround = LayerMask.NameToLayer("Ground"); } void Update () { if...

1.新建工程,创建测试物体并赋予材质。 2.插入如图所示代码。 3.将脚本绑定到测试物体上。 4.点击播放按钮,拖动鼠标测试。

网站首页 | 网站地图
All rights reserved Powered by www.wmjy.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com